0-1 - 執行緒池資源耗盡

伺服器的執行緒資源已耗盡。預設情況下,Dubbo 伺服器上的業務執行緒數為 200。如果並行請求數超過 200,新的請求將被拒絕並拋出此錯誤。

可能原因

  1. 來自 Consumer 的並行請求量過大,導致 Provider 上建立的執行緒數超過限制。
  2. 可能在 Provider 端執行業務時,執行緒因為業務呼叫外部應用程式介面而阻塞,導致執行緒池無法回收執行緒。

故障排除和解決步驟

  • 啟用 Dubbo 的存取日誌功能,檢查短時間內是否有大量 RPC 服務呼叫。
  • 透過 jpsjstack 指令檢查執行緒池中每個執行緒的狀態,查看是否有業務呼叫外部應用程式介面造成阻塞。
  • 如果來自 Consumer 的並行請求量過大,則調整 Provider 端的 dubbo.provider.threads 參數,增加 Dubbo 執行緒池的數量。
  • 如果 Provider 業務的 QPS 過大,目前伺服器數量無法處理,則增加 Provider 端伺服器的數量,讓更多伺服器分擔壓力。

此錯誤碼的常見問題頁面請參考 「Dubbo 常見錯誤及解決方法」。引用文章以 CC-BY-4.0 授權編譯。在此感謝原作者。