梦飞数据中心 > 帮助中心 > 服务器相关 > Nginx服务器出现502错误的解决办法

Nginx服务器出现502错误的解决办法

1、查看当前的PHP FastCGI进程数是否够用
 
netstat -anpo | grep "php-cgi"| wc -l
 
如果实际使用的“FastCGI进程数”接近预设的“FastCGI进程数”,那么,说明“FastCGI进程数”不够用,需要增大。
 
2、部分PHP程序的执行时间超过了Nginx的等待时间
 
可以适当增加nginx.conf配置文件中FastCGI的timeout时间,php.ini中memory_limit设低了会出错,修改了php.ini的memory_limit为64M,重启nginx,发现好了,原来是PHP的内存不足了。
 
3、max-children和max-requests
 
一台服务器上运行着nginx php(fpm) xcache,访问量日均 300W pv左右
 
最近经常会出现这样的情况: php页面打开很慢,cpu使用率突然降至很低,系统负载突然升至很高,查看网卡的流量,也会发现突然降到了很低。
 
4、增加缓冲区容量大小
 
将nginx的error log打开,发现“pstream sent too big header while reading response header from upstream”这样的错误提示。查阅了一下资料,大意是nginx缓冲区有一个bug造成的,我们网站的页面消耗占用缓冲区可能过大。参考老外写的修改办法增加了缓冲区容量大小设置,502问题彻底解决。后来系统管理员又对参数做了调整只保留了2个设置参数:client head buffer,fastcgi buffer size。
 
5、request_terminate_timeout
 
如果主要是在一些post或者数据库操作的时候出现502这种情况,而不是在静态页面操作中常见,那么可以查看一下php-fpm.conf设置中的一项:request_terminate_timeout
 
这个值是max_execution_time,就是fast-cgi的执行脚本时间。
 
0s为关闭,就是无限执行下去。(当时装的时候没仔细看就改了一个数字)
 
发现,问题解决了,执行很长时间也不会出错了。
 
优化fastcgi中,还可以改改这个值5s 看看效果。
 
php-cgi进程数不够用、php执行时间长、或者是php-cgi进程死掉,都会出现502错误。
 
部分文章来源与网络,若有侵权请联系删除,谢谢!

(责任编辑:Anny) 部分网站内容及图片来源于网络,如有侵权或违规内容请联系管理员删除!