Nginx 502 Bad Gateway的含义是要求的PHP-CGI已经实行,但是由于某种缘故原由(壹般是读取资源的问题)没有实行完毕而导致PHP-CGI进程终止。

Nginx 504 Gateway Time-out的含义是所要求的网关没有要求到,大略来说便是没有要求到可以实行的PHP-CGI。

二、缺点提示缘故原由剖析:

nginxphpfpm504晓桂科技Nginx的502和504报错的解决办法 SQL

办理这两个问题实在须要综合思考的,一样平常来说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重启的周期缩短,

有时的高内存操作造成的问题影响韶光也会缩短。