国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

sendbuffertoworker fail. may be the send buffer are overflow

說明

出現(xiàn)這個錯誤說明服務端處理請求的速度低于客戶端發(fā)送請求的速度。 例如服務端處理一個請求需要10毫秒,那么單個進程每秒最多處理100個請求,如果客戶端每秒發(fā)來200個請求,
那么就有100個請求排隊等待處理。如果是一直處于這種狀態(tài),則會有越來越多的請求積壓在請求隊列,導致請求被延遲處理,
最終導致積壓數(shù)據(jù)大小超過隊列緩沖區(qū)上限(上限受$Gateway->sendToWorkerBufferSize控制),然后報出這個錯誤。
可以調大businessWoreker進程數(shù)緩解問題,但是想根本解決問題需要從以下途徑解決:

運行 php start.php status 命令檢查是否有busy的進程。
出現(xiàn)busy進程則可能是以下原因:

1、業(yè)務代碼有死循環(huán)。表現(xiàn)為對應進程占用cpu率很高,對應進程一直是busy狀態(tài)
2、業(yè)務代碼可能阻塞在某個外部資源請求上。表現(xiàn)為對應進程占用cpu使用率很低,對應進程一直是busy狀態(tài)
3、業(yè)務執(zhí)行比較慢,表現(xiàn)為busy的進程過一會兒恢復成idle狀態(tài)
4、有大量的請求需要進程處理,表現(xiàn)為對應進程cpu很高

如果busy進程對應的cpu占用很高,需要review代碼看看哪里有while(1) foreach for類似的代碼。

如果cpu不高,需要用 strace -ttp $pid 命令跟蹤下businessWorker進程系統(tǒng)調用,
是否有read(fd=x、 poll(fd=x類似的代碼,如果有說明進程在等待某個fd的數(shù)據(jù)返回,
這時用lsof -p $pid | grep $fd 查看進程在等待哪個外部資源的返回,從而定位是哪里問題。

如果是業(yè)務比較慢,則需要打日志定位下業(yè)務哪個部分比較耗時,然后做響應優(yōu)化。

如果是有大量的請求需要處理,可以考慮降低請求量或者增加businessWorker進程數(shù)量或者增加服務器分布式部署。

編輯于2025-05-26 16:30:06 完善本頁 +發(fā)起討論
贊助商