線上一臺機器(該論壇所在機器)近期頻繁出現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