lnmp nginx 502 Bad gateway 错误解决思路

阅读 (2113)
lnmp nginx 502 Bad gateway 错误解决思路

这里说的502的前提是平时网络流量正常时不会出现502,但做活动时,流量暴增后,nginx返回502状态

一、PHP问题排查

1.查看php错误日志

tail /usr/local/php/var/log/php-fpm.log

如果出现各种的警告,安警告信息修改配置

[pool www] seems busy (you may need to increase pm.start_servers, or pm.min/max_spare_servers), spawning 16 children, there are 59 idle, and 117 total children

2、php-fpm优化参数介绍
他们分别是:pm、pm.max_children、pm.start_servers、pm.min_spare_servers、pm.max_spare_servers。

pm:表示使用那种方式,有两个值可以选择,就是static(静态)或者dynamic(动态)。
在更老一些的版本中,dynamic被称作apache-like。这个要注意看配置文件的说明。


下面4个参数的意思分别为:

pm.max_children:静态方式下开启的php-fpm进程数量
pm.start_servers:动态方式下的起始php-fpm进程数量
pm.min_spare_servers:动态方式下的最小php-fpm进程数
pm.max_spare_servers:动态方式下的最大php-fpm进程数量

区别:

如果dm设置为 static,那么其实只有pm.max_children这个参数生效。系统会开启设置数量的php-fpm进程。


如果dm设置为 dynamic,那么pm.max_children参数失效,后面3个参数生效。
系统会在php-fpm运行开始 的时候启动pm.start_servers个php-fpm进程,
然后根据系统的需求动态在pm.min_spare_servers和pm.max_spare_servers之间调整php-fpm进程数

例如我上面遇到的警告信息,调高start_servers值至120后警告不再出现

pm.max_children = 1000
pm.start_servers = 120 // 不能小于 min_spare_servers 同时不能大于 max_spare_servers
pm.min_spare_servers = 120
pm.max_spare_servers = 1000


关于 pm.max_children 值多大合适

这个值原则上是越大越好,php-cgi的进程多了就会处理的很快,排队的请求就会很少。

设置”max_children” 也需要根据服务器的性能进行设定。

计算方式如下:

一般来说一台服务器正常情况下每一个php-cgi所耗费的内存在20M~30M左右,因此我的”start_servers”我设置成120个

而如果我 的”max_children”设置的较小, lnmp一键安装包 默认40个,那么php-cgi就会“很累“,处理速度也很慢,等待的时间也较长,占用的CPU也很高。

公司服务器8核16G,max_children设置为1000,测试过后,可以承受这个开销,不够再加机器,(性能远低于JAVA多线程处理,这点没的说)

如果长时间没有得到处理的请求就会出现 504 Gateway Time-out 这个错误,而正在处理的很累的那几个php-cgi如果遇到了问题就会出现 502 Bad gateway 这个错误。

二、SQL语句

这里只提一句:查询过慢拖了PHP后腿,导致进程排队处理不完,有的就进程就超时了,固nginx返回了 502,我遇到的情况是查询字段没加索引,导致活动期间数据暴增后,查询越来越慢

其它情况就自行查找吧,思路就是找到哪句sql执行起来最耗时。

三、服务器性能

这个问题好解决,当上述问题都解决,但依然返回502,ubuntu用top命令看一下CPU负载情况,例如我单台机器,8核16G内存,上述问题解决都,CPU依然满载的情况,加负载均衡,再加设备即可解决,这种问题最好解决,花钱就行~

四、nginx

lnmp nginx配置的默认允许连接数是够的

events
{
     use epoll;
     worker_connections 51200;
     multi_accept on;
}

但如果worker_connections被你手动改小了,那就处理一下

更新于:2018-07-06 13:53:53
返回顶部