Nginx 502 bad gateway问题的解决方法
2016-11-29 21:00
525 查看
Nginx 502 bad gateway问题的解决方法
更新时间:2016-10-10 08:56:40Nginx 502 Bad Gateway的含义是请求的PHP-CGI已经执行,但是由于某种原因(一般是读取资源的问题)没有执行完毕而导致PHP-CGI进程终止,一般来说Nginx 502 Bad Gateway和php-fpm.conf的设置有关。
常见的原因可能是php-cgi进程数不够用、php执行时间长(mysql慢)、或者是php-cgi进程死掉,都会出现502错误。
1. 在安装好的环境中,运行一段时间出现502问题,一般是因为默认php-cgi进程是5个,可能因为phpcgi进程不够用而造成502,需要修改/usr/local/php/etc/php-fpm.conf 将其中的max_children值适当增加。
2. php执行超时,修改/usr/local/php/etc/php.ini 将max_execution_time 改为300
3. 磁盘空间不足,可以使用 # df -h命令查看磁盘使用量
4. php-cgi进程死掉了。
通常的排查方法如下:
1、查看php fastcgi的进程数(max_children值)
# netstat -anop | grep php-cgi | wc -l
# netstat -anpo | grep php-fpm | wc -l
假如显示是5
2、查看当前进程
# ps aux | grep php-fpm 观察fastcgi/php-fpm进程数,假如使用的进程数等于或高于5个,说明需要增加。
3、调整/usr/local/php/etc/php-fpm.conf 的相关设置
pm.max_children = 5
request_terminate_timeout = 60
max_children最多5个进程,按照每个进程20MB内存,最多100MB。也就是1分钟。max_children增多,则php-cgi的进程多了就会处理的很快,排队的请求就会很少。 但是设置max_children也需要根据服务器的性能进行设定,一般来说一台服务器正常情况下每一个php-cgi所耗费的内存在20M左右。根据自己服务器购买的内存来实际决定。
request_terminate_timeout执行的时间为60秒,request_terminate_timeout值可以根据服务器的性能进行设定。一般来说性能越好你可以设置越高,20分钟-30分钟都可以。
4. 部分PHP程序的执行时间超过了Nginx的等待时间,可以适当增加nginx.conf配置文件中FastCGI的timeout时间,例如:
http
{
……
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
……
}
***************************************************
nginx php环境502可能有以下几种情况
1.php-fpm进程数不够用
使用 netstat -napo |grep "php-fpm" | wc -l 查看一下当前fastcgi进程个数,如果个数接近conf里配置的上限,就需要调高进程数。
但也不能无休止调高,可以根据服务器内存情况,可以把php-fpm子进程数调到100或以上,在4G内存的服务器上200就可以。
2. 调高调高linux内核打开文件数量
可以使用这些命令(必须是root帐号)
echo 'ulimit -HSn 65536' >> /etc/profile
echo 'ulimit -HSn 65536' >> /etc/rc.local
source /etc/profile
3.脚本执行时间超时
如果脚本因为某种原因长时间等待不返回 ,导致新来的请求不能得到处理,可以适当调小如下配置。
nginx.conf里面主要是如下
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
php-fpm.conf里如要是如下
request_terminate_timeout = 10s
4.缓存设置比较小
修改或增加配置到nginx.conf
proxy_buffer_size 64k;
proxy_buffers 512k;
proxy_busy_buffers_size 128k;
总结:
pm.max_children = 200 此配置不要过大,否则mysql占用CPU会很高。
相关文章推荐
- Nginx 502 bad gateway问题的解决方法
- Nginx 502 Bad Gateway 错误的原因及解决方法
- Nginx 502 Bad Gateway错误的原因分析与解决方法
- nginx加php-fpm出现502 bad gateway错误的5种解决方法
- nginx加php-fpm报502 bad gateway错误五种解决方法
- Nginx 502 Bad Gateway 错误的原因及解决方法
- Nginx 502 Bad Gateway 错误的解决方法
- (总结)Nginx 502 Bad Gateway错误触发条件与解决方法
- Nginx 502 Bad Gateway 错误的原因及解决方法
- ubuntu+nginx 出现502 bad gateway解决方法
- Nginx 502 Bad Gateway 错误的原因及解决方法
- Nginx 502 Bad Gateway错误常见的4种原因和解决方法
- 深入探讨:Nginx 502 Bad Gateway错误的解决方法
- 深入探讨:Nginx 502 Bad Gateway错误的解决方法
- Nginx 502 Bad Gateway 错误的原因及解决方法
- nginx报502 bad GateWay错误的解决方法
- (总结)Nginx 502 Bad Gateway错误触发条件与解决方法
- nginx 下 thinkphp 502 bad Gateway + "LNMP一键安装包的Nginx 502 Bad Gateway错误可能原因及解决方法"
- unbuntu下 nginx php-fpm.sock 502 bad getaway权限问题,解决方法
- nginx 502 Bad Gateway 的一种解决方法(转载)