解决VPS蛋疼的N次出现502 Bad Gateway错误

最近网站每天高频率的出现nginx 502 bad gateway错误,自从最近这段时间我在VPS里放了个小说小偷采集站程序后每天出现502的次数在十次以上我擦,我他妈的一直百思不解我查看了服务器的各种内存占用、负载等等情况都没有出现很严重的超负荷情况甚至看显示结果标明VPS其实根本就很闲置可是还是频繁的出现502错误

,我操后来终于知道问题出在LNMP的默认设置上一般是因为默认php-cgi进程是5个,可能因为phpcgi进程不够用而造成502,需要修改/usr/local/php/etc/php-fpm.conf 将其中的max_children值适当增加。比如我的采集程序经常让我的进程数飙到一百以上不死机才见鬼了!

具体解决方案如下:

首先先SSH运行如下命令用于查看进程数以方便稍后的调节参数参考

netstat -anpo | grep “php-cgi” | wc -l

然后执行如下命令并在文件内找到max_children项修改默认数字为你觉得合适的理想数字,默认一般是5你可以根据你自己的硬件及配置情况设置的尽量大点。
vi /usr/local/php/etc/php-fpm.conf
而max_children这个值又是怎么计算出来的呢?这个值原则上是越大越好,php-cgi的进程多了就会处理的很快,排队的请求就会很少。 设置max_children也需要根据服务器的性能进行设定,一般来说一台服务器正常情况下每一个php-cgi所耗费的内存在20M左右。

 

最后再修改/usr/local/php/etc/php.ini 将max_execution_time 改为300

如果你的服务器性能足够好,且宽带资源足够充足,PHP脚本没有系循环或BUG的话你可以直接将 request_terminate_timeout设置成0s。0s的含义是让PHP-CGI一直执行下去而没有时间限制。而如果你做不到这一点,也就 是说你的PHP-CGI可能出现某个BUG,或者你的宽带不够充足或者其他的原因导致你的PHP-CGI假死那么就建议你给 request_terminate_timeout赋一个值,这个值可以根据服务器的性能进行设定。一般来说性能越好你可以设置越高,20分钟-30分 钟都可以。

最后一步重启LNMP:/root/lnmp restart

稀饭波斯再次高呼,搞基可以战胜一切!___完___

点赞

发表评论

电子邮件地址不会被公开。 必填项已用*标注