nginx Tengine 502 Bad Gateway问题排查

2016-06-19 03:22:00 228

首先,这里讲的服务器环境(lnmp)是指 linux + nginx + php(php-cgi + php-fpm)+ mysql。

502 Bad Gateway是lnmp下出现得最频繁的问题,其原因也有很多,以下是我收集的问题原因及其解决方法。

 

1. php进程死亡

此原因的问题表现为:每次动态(php)请求都出现502错误

解决方法:启动php即可 “service php-fpm start “,或者 “php安装路径/php/sbin/php-fpm start”

 

2. php-cgi进程数不足

此原因的问题表现为:动态请求有时出现502错误,一般没问题,这是并发高时php-cgi进程数不够用的表现

解决方法:修改php-fpm配置php-fpm.conf,将60 中的数加大,max_children数的设置不仅取决于服务器硬件配置,而且和php程序的复杂度有关,一般4G内存可以设置到120-200。修改后把php-fpm reload下;必要时是再修改nginx配置nginx.conf,将 worker_processes 数调到与cpu数相等(worker_processes默认为1)

 

3. php-cgi进程超时

此原因的问题表现为:php进程运行一段时间后出现502错误,这种情况可能是php程序没有加set_time_limit(0),也可能是被php-fpm的设置限定了运行时间,下面讨论第二中情况

解决方法:修改php-fpm配置php-fpm.conf,将30s 中数字调到更高,调为0s则允许无限时间运行;必要时再修改nginx配置nginx.conf,将fastcgi_connect_timeout、 fastcgi_send_timeout、fastcgi_read_timeout参数加大

 

4. 磁盘空间不足

此原因较少,问题表现为:502错误或者无法连接到服务器,无法连接到服务器时nginx也死了

这种情况的判断:启动php-fpm或者nginx的时间较长,但最终启动失败,这大概就是磁盘空间不足了,然后可以用命令查看磁盘占用状况:df -lh ,如果根目录”/”对应的磁盘使用率为100%,那么需要清理磁盘空间

解决方法:删除过大的日志文件,关闭部分服务组件的日志。一般需要检查 /var/log 目录下的日志文件,检查 nginx、php的日志,检查mysql的日志。如果以上目录没有问题,则需一个一个的检查其他目录(优先检查 /usr目录),删除过大的文件。


提交成功!非常感谢您的反馈,我们会继续努力做到更好!

这条文档是否有帮助解决问题?

非常抱歉未能帮助到您。为了给您提供更好的服务,我们很需要您进一步的反馈信息:

在文档使用中是否遇到以下问题: