在 Windows 2000 或 Windows Server 2003 環境下以 FastCGI 模式運行 PHP 時,「The FastCGI pool queue is full」 是常見錯誤。這通常發生在流量暴增、FastCGI 工作進程無法即時處理請求時。解決核心在於調整 fcgiext.ini 中三個關鍵參數:instanceMaxRequests、maxInstances 及 queueLength。
定義:指定單一 FastCGI 工作進程在被回收前可處理的最大請求數量。
定義:FastCGI 應用程式池中可同時啟動的最大工作進程數。
maxInstances ≈ CPU核心數 × 2 ~ 4。例如 4 核心伺服器可設 8~16。過高會導致上下文切換頻繁、記憶體耗盡。定義:FastCGI 進程池可排隊等待處理的最大請求數。
instanceMaxRequests=500 maxInstances=12 queueLength=3000
maxInstances 設極大,導致記憶體耗盡觸發 Swap,反而拖垮效能。instanceMaxRequests,長期運行的進程累積記憶體洩漏,最終導致進程崩潰。queueLength 不優化後端邏輯,請求在佇列中等待過久,用戶體驗仍差。FastCGI 佇列滿載本質是「產生速度 > 處理速度」。透過合理配置上述三參數,配合程式碼優化、靜態資源分離、啟用 OpCache 等手段,可從根本上解決高併發下的 503 錯誤。建議將調整過程記錄為運維 SOP,定期複盤。