IIS 應用程式池 (AppPool) 頻繁自動回收/崩潰,嚴重影響服務可用性。本文說明如何定位 HTTP.sys 錯誤日誌、解讀關鍵錯誤碼、常見成因與排查步驟。
C:\WINDOWS\system32\LogFiles\HTTPERR\httperr_YYYYMMDD.log
此為 HTTP.sys 核心層記錄,早於 IIS 處理管線,能捕捉 AppPool 未啟動、佇列滿、連線重置等底層錯誤。
| 錯誤碼 | 名稱 | 典型成因 |
|---|---|---|
| 503 | Service Unavailable | AppPool 停止、啟動失敗、佇列滿、Rapid Fail Protection 觸發 |
| 400 | Bad Request | 請求標頭過大、異常字元、HTTP.sys 限制 |
| 401 | Unauthorized | 驗證失敗、Kerberos/NTLM 協商問題 |
| Connection_Dropped / Connection_Abandoned | 連線中斷 | 客戶端主動斷開、負載均衡器健康檢查、防火牆超時 |
| Timer_ConnectionIdle | 閒置超時 | HTTP.sys connectionTimeout 觸發 |
Event ID 5002, 5011, 5189 等。503、AppOffline、QueueFull 關鍵字。w3wp.exe 私有記憶體、Gen2 GC、ThreadPool 佇列長度。startupTimeLimit (預設 90s) → 增加限制或優化啟動邏輯。Max Pool Size、查詢優化。系統性排查:日誌 → 事件 → 追蹤 → Dump → 程式碼修復 → 壓測驗證。