Nginx + PHP-FPM随机给出502

时间:2015-06-17 07:47:06

标签: php nginx apc

我的网站使用Nginx + PHP-FPM正常工作,但随机出现502错误。环境细节

OS - CetnOS 6
Nginx
PHP-FPM (php 5.4)
APC (Code Cache APC 3.1.13  beta)
Memcache (data cache)

在php-fpm中

pm.max_children = 200
pm.start_servers = 40
pm.min_spare_servers = 30
pm.max_spare_servers = 50
pm.max_requests = 500

我也使用TCP连接而不是套接字。

如果有任何遗体有任何意见,请更新我。

由于

1 个答案:

答案 0 :(得分:0)

首先将pm.max_children = 200缩减为pm.max_children = 50

您必须首先增加系统的文件限制,从而允许nginx和php-fpm打开更多的文件。文件限制必须增加,因为在linux中一切都是文件。因此,打开的连接越多,将需要更多的文件。在ubuntu中,文件限制配置在/etc/security/limits.conf中完成。您需要为CentOS找到它。

然后尝试增加php-fpm可以使用的内部端口范围。除了这个tcp端口通常在重用之前与超时值相关联,减少此超时以便在完成工作时释放更多端口。

查找详细信息here

<强>增加:

如果错误仍然存​​在,请尝试将php-fpm工作进程的数量增加到100.虽然不建议将值设置得如此之高,因为它们消耗了额外的内存。

pm.max_children = 100
pm.start_servers = 90
pm.min_spare_servers = 70
pm.max_spare_servers = 100

您可以尝试各种值以获得最适合您的目的。

502的基本原因是当nginx无法转发或无法将请求转发到php-fpm时。增加php-fpm工作进程的数量可以是其中一种方式,从而为nginx提供更多进程来转发请求。