首頁  >  文章  >  後端開發  >  php-fpm log中出現大量的failed to acquire scoreboard

php-fpm log中出現大量的failed to acquire scoreboard

WBOY
WBOY原創
2016-12-01 00:25:344960瀏覽

php-fpm log中出現大量的failed to acquire scoreboard, 導致子進程到了最大請求數,kill之後, 就拉不起新的子進程, 最後,就剩master進程了。
日誌如下:

<code>ERROR: [pool ] no free scoreboard slot
WARNING: [pool www] child 31311 said into stderr: "WARNING: failed to acquire proc scoreboard"
</code>

經過排查,在開始出現這個問題的時候, 一個請求出現 500, 出現 500 的情況是由於, 查詢資料庫的結果集比較大,還有出現這個情況的時候,系統log也出現了

<code>TCP: time wait bucket table overflow
</code>

有知道原因的嗎?

回覆內容:

php-fpm log中出現大量的failed to acquire scoreboard, 導致子進程到了最大請求數,kill之後, 就拉不起新的子進程, 最後,就剩master進程了。
日誌如下:

<code>ERROR: [pool ] no free scoreboard slot
WARNING: [pool www] child 31311 said into stderr: "WARNING: failed to acquire proc scoreboard"
</code>

經過排查,在開始出現這個問題的時候, 一個請求出現 500, 出現 500 的情況是由於, 查詢資料庫的結果集比較大,還有出現這個情況的時候,系統log也出現了

<code>TCP: time wait bucket table overflow
</code>

有知道原因的嗎?

WARNING: failed to acquire proc scoreboard 是不是由於大數據結果集查詢的資料都放記憶體進行操作,然後伺服器系統記憶體不足,導致這個問題。
time wait bucket table overflow由於處理請求有問題,造成大量的TCP連接,連接的數目超過了系統配置的tcp_max_tw_buckets最大值。
嘗試解決方式:

  1. 加大系統記憶體

  2. 分塊處理大數據結果集,或按行讀取大資料庫結果集(遊標方式)

  3. 修改tcp_max_tw_buckets的相關值

以上純屬個人推測,僅供參考,因為本人沒有遇到這個錯誤

查一下是不是哪個腳本耗掉了大量記憶體

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn