我的网站使用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连接而不是套接字。
如果有任何遗体有任何意见,请更新我。
由于
答案 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提供更多进程来转发请求。