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

相關文章
相關標籤/搜索