nginx 502排错

线上一台机器(该论坛所在机器)近期频繁出现502,每100次访问就会出现10次,这频率也过高了。因而开始了个人502排查之旅php

ps aux |grep -c php

结果为200html

netstat -an |grep -c php

结果一直在5如下,这说明php-cgi 的进程是绝对够用的。linux

查看php-fpm.lognginx

tail -f  /usr/local/php/logs/php-fpm.log

无有价值信息socket

查看nginx错误日志php-fpm

tail -f /usr/local/nginx/logs/error.log

无有价值信息google

感受问题可能出在了nginx的配置上,因而网上找关于nginx.conf 的配置说明,改来改去始终解决不了这难缠的502。(该过程先后延续一周之多,改了N多个参数,由于没有价值,因此我再也不详细记录,在这里简单一笔带过。)

几天事后,忽然灵机一动,nginx的错误日志既然不报错,那说明定义的日志级别没有达到要报错的要求,因而找资料修改nginx错误日志级别为error(默认为crit) 
请参考http://mylinux.5d6d.net/thread-1289-1-1.html
终于发现有价值的信息:
spa

connect() to unix:/tmp/php-fpm.socket failed (11: Resource temporarily unavailable) while connecting to upstream

google了一番,立刻就找到了解决问题的方法:操作系统

修改php-fpm.conf
.net

<value name="backlog">-1</value>

改为:

<value name="backlog">1024</value>

这是由于,php-fpm 在 backlog 设置为 -1 的状况下,表示backlog数无限制,由操做系统决定,而操做系统是由内核参数net.core.somaxconn 决定,个人操做系统该参数的值设置的很大为262144。该参数的值默认为128,我想设置成262144确定是不合理的。因此,我又试验了一下。
不修改php-fpm.conf ,即backlog的值为-1, 而后把net.core.somaxconn修改成默认值128 ,此时也没有再出现502

本文引用:http://www.360doc.com/content/15/0923/13/27889159_501013998.shtml

相关文章
相关标签/搜索