php-fpm log中出現大量的failed to acquire scoreboard, 導致子進程到了最大請求數,kill之後, 就拉不起新的子進程, 最後,就剩master進程了。
日誌如下:
ERROR: [pool ] no free scoreboard slotWARNING: [pool www] child 31311 said into stderr: "WARNING: failed to acquire proc scoreboard"
經過排查,在開始出現這個問題的時候, 一個請求出現 500, 出現 500 的情況是由於, 查詢資料庫的結果集比較大,還有出現這個情況的時候,系統log也出現了
TCP: time wait bucket table overflow
有知道原因的嗎?
回複內容:
php-fpm log中出現大量的failed to acquire scoreboard, 導致子進程到了最大請求數,kill之後, 就拉不起新的子進程, 最後,就剩master進程了。
日誌如下:
ERROR: [pool ] no free scoreboard slotWARNING: [pool www] child 31311 said into stderr: "WARNING: failed to acquire proc scoreboard"
經過排查,在開始出現這個問題的時候, 一個請求出現 500, 出現 500 的情況是由於, 查詢資料庫的結果集比較大,還有出現這個情況的時候,系統log也出現了
TCP: time wait bucket table overflow
有知道原因的嗎?
WARNING: failed to acquire proc scoreboard
是不是由於大資料結果集查詢的資料都放記憶體進行操作,然後伺服器系統記憶體不足,導致這個問題。
time wait bucket table overflow
由於處理請求有問題,造成大量的TCP
串連,串連的數目超過了系統配置的tcp_max_tw_buckets
最大值。
嘗試解決方式:
加大系統記憶體
分塊處理大資料結果集,或按行讀取大資料庫結果集(遊標方式)
修改tcp_max_tw_buckets
的相關值
以上純屬個人推測,僅供參考,因為本人沒有遇到過這個錯誤
查一下是不是哪個指令碼耗掉了大量記憶體