解决Nginx+PHP(FastCGI)遇到的502 Bad Gateway错误

回复 收藏
最近几天发现个别服务器出现流量不稳定的情况,具体的表现是,流量时而高,时而低,在流量低的时候发现系统的负载很小,几乎为0,但是过一会,负载又高上去,流量也上去,很是奇怪,查找了2天没有找到原因,后来看到一边文章,介绍了解决nginx出现502的错误现象,按照这个方法进行尝试,最终还是找到了问题的原因。
        解决步骤如下:
        1、查看当前的PHP FastCGI进程数是否够用:
        netstat -anpo | grep “php-cgi” | wc -l
        如果实际使用的“FastCGI进程数”接近预设的“FastCGI进程数”,那么,说明“FastCGI进程数”不够用,需要增大。
        2、部分PHP程序的执行时间超过了Nginx的等待时间,可以适当增加nginx.conf配置文件中FastCGI的timeout时间,例如:
        ……
http
{
……
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
……
}
……

          在做第一步的时候,系统当前的PHP FastCGI进程数明显超过了预设值的64这个数值,在电信的服务器上查看当前的PHP FastCGI进程数没有高于64这个数值,而且网通线路的活动连接明显高于电信的活动连接,准备到晚上的时候看看情况,结果到晚上22:30的时候,查看系统当前的PHP FastCGI进程数明显小于64预设值,当前的活动连接也比原来低很多,由此可以说明出现nginx不稳定的情况是由于服务器访问负载过大引起的,就是加上第二步的错误也不顶作用。
        总结,php-cgi进程数不够用、php执行时间长、或者是php-cgi进程死掉,都会出现502错误。

2016-02-12 16:56 举报
已邀请:
0

xteplinux

赞同来自:

学习了
0

lyhabc

赞同来自:

PHP FastCGI进程数明显超过了预设值的64这个数值 增大进程数也未必有用
比如云主机,1核1G的配置
pm = dynamic   
pm.max_children = 20   
pm.start_servers = 5   
pm.min_spare_servers = 5
pm.max_spare_servers = 20
pm.max_requests = 500   
rlimit_files = 65535      

比较合理
0

balich

赞同来自:

学习了,谢谢分享!
0

435664265

赞同来自:

学习
0

Linuxpp

赞同来自:

look

回复帖子,请先登录注册

退出全屏模式 全屏模式 回复
评分
可选评分理由: