nginx php-fpm segfault那點事

lnmp一鍵服務器裝機,完成,app搞定,開始試着發展幾個用戶吧。

總是隔三差五的超時。

查看message日誌,總是能看到幾行紅色的

kernel: [5612713.463986] php-fpm[12410]: segfault at 6f3cc0 ip 00000000006fee94 sp 00007fff41c76d80 error 7 in php-fpm[400000+75e000]

很咋眼。

這可以理解了,當用戶很榮幸的分到這個fpm進程的時候,不是bad gateway就是timeout。

首先懷疑庫不兼容,不過沒道理啊,全是編譯安裝的,應該都一致,卸載一些不必要的程序,依舊不行。

然後停掉不必要的服務,值保留nginx,phpfpm,停掉memcache,redis。依舊不行。

寫了個內存監控腳本,發現出現問題的時候,內存變化不明顯。

寫了個負載監控的腳本,發現負載變化不明顯。

於是開始優化參數,從nginx,到php,到fpm,終於發現一個可疑的參數。

backlog,學過linux內核的人都知道,他是tcp連接建立過程中的一個控制參數,

The backlog argument defines the maximum length to which the queue of pending connections for sockfd may grow. If a connection request arrives when the queue is full, the client may receive an error with an indication of ECONNREFUSED or, if the underlying protocol supports retransmission, the request may be ignored so that a later reattempt at connection succeeds.

實際上在linux內核2.2版本以後,backlog參數控制的是已經握手成功的還在accept queue的大小。

那麼是不是phpfpm的backlog是幹什麼用的呢?是不是也是與連接有關呢?

有位大神幫忙實驗了

http://blog.sina.com.cn/s/blog_714afb2b0101ftca.html

但是他的問題我也解決不了,我只知道我的機器-1,性能很差,我改成1024,再也沒有出現segfault的問題。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章