Nginx 502 Bad Gateway的含义是要求的PHP-CGI已经实行,但是由于某种缘故原由(壹般是读取资源的问题)没有实行完毕而导致PHP-CGI进程终止。
Nginx 504 Gateway Time-out的含义是所要求的网关没有要求到,大略来说便是没有要求到可以实行的PHP-CGI。
二、缺点提示缘故原由剖析:
办理这两个问题实在须要综合思考的,一样平常来说Nginx 502 Bad Gateway和php-fpm.conf的设置有关,
而Nginx 504 Gateway Time-out则是与nginx.conf的设置有关。
php-fpm.conf有两个至关主要的参数,一个是”max_children”,另一个是”request_terminate_timeout” ,但是这个值不是通用的,而是须要自己打算的。
打算的办法如下:
如果你的做事器性能足够好,且宽带资源足够充足,PHP脚本没有系循环或BUG的话你可以直接将”request_terminate_timeout”设置成0s。0s的含义是让PHP-CGI一贯实行下去而没有韶光限定。而如果你做不到这一点,也便是说你的PHP-CGI可能涌现某个BUG,或者你的宽带不足充足或者其他的缘故原由导致你的PHP-CGI能够假去世,那么就建议你给”request_terminate_timeout”赋一个值,这个值可以根据你做事器的性能进行设定。壹般来说性能越好你可以设置越高,20分钟 -30分钟都可以。由于做事器PHP脚本须要永劫光运行,有的可能会超过10分钟因此我设置了900秒,这样不会导致PHP-CGI去世掉而涌现502 Bad gateway这个缺点。
而”max_children”这个值又是怎么打算出来的呢?这个值原则上是越大越好,php-cgi的进程多了就会处理的很快,排队的要求就会很少。设置”max_children”也须要根据做事器的性能进行设定,一样平常来说一台做事器正常情形下每一个php-cgi所耗费的内存在20M 旁边,因此我的”max_children”我设置成40个,20M40=800M也便是说在峰值的时候所有PHP-CGI所耗内存在800M以内,低于有效内存1Gb。而如果我的”max_children”设置的较小,比如5-10个,那么php-cgi就会“很累”,处理速率也很慢,等待的韶光也较长。如果永劫光没有得到处理的要求就会涌现504 Gateway Time-out这个缺点,而正在处理的很累的那几个php-cgi如果碰着了问题就会涌现502 Bad gateway这个缺点。
三、临时办理办法如下:
Nginx提示502和504缺点的临时办理办法是:
1、调度php-fpm.conf的干系设置:
<value name=\公众max_children\"大众>32</value>
<value name=\公众request_terminate_timeout\"大众>30s</value>
2、调度nginx.conf的干系设置:
server_tokens off;
sendfile on;
tcp_nopush on;
server_names_hash_bucket_size 256;
client_header_buffer_size 256k;
large_client_header_buffers 4 256k;
client_body_buffer_size 256k;
client_header_timeout 3m;
client_body_timeout 3m;
send_timeout 3m;
client_max_body_size 50m;
keepalive_timeout 120;
#fastcgi_connect_timeout 300;
#fastcgi_send_timeout 300;
#fastcgi_read_timeout 300;
#fastcgi_buffer_size 64k;
#fastcgi_buffers 4 64k;
#fastcgi_busy_buffers_size 128k;
#fastcgi_temp_file_write_size 128k;
fastcgi_intercept_errors on;
fastcgi_connect_timeout 600;
fastcgi_send_timeout 600;
fastcgi_read_timeout 600;
fastcgi_buffer_size 256k;
fastcgi_buffers 16 256k;
fastcgi_busy_buffers_size 512k;
fastcgi_temp_file_write_size 512k;
四、办理方案如下:
A、crontab里写入php-fpm的平滑重启命令
B、适当提高children的数值,降落max_requests的数值。
建议壹般云主机的children在5-10,max_requests在1000-2000,详细自行调度。
降落max_requests的数值可使php-cgi重启的周期缩短,
有时的高内存操作造成的问题影响韶光也会缩短。