Windows Server 2003 IIS 6.0 出現 Service Unavailable 錯誤,網站無法存取。本文歸納五大常見成因:IIS 連線數上限、應用程式集區資源限制、程式錯誤過多導致集區停用、Access 資料庫引擎災難性故障、ISAPI 篩選器載入失敗,並提供對應排查與修復步驟。
成因一:超過 IIS 連線數限制
- 現象:刷新幾次即恢復;系統事件記錄無明顯錯誤。
- 解決:IIS 管理員 ► 網站屬效 ► 「效能」► 調高「連線數限制」或取消限制。
成因二:應用程式集區資源限制
- 現象:特定網站頻繁出現,其他網站正常;事件記錄出現「應用程式集區 'xxx' 超過其作業限制」。
- 解決:IIS 管理員 ► 應用程式集區 ► 右鍵屬效 ► 「效能」/「健康情況」► 調高 CPU/記憶體/要求佇列限制。
成因三:程式錯誤過多導致集區自動停用
- 現象:事件記錄出現「應用程式集區 'xxx' 被自動停用,原因是為此應用程式集區提供服務的處理序中出現一系列錯誤」。
- 解決:檢查應用程式程式碼修正 Bug;暫時方案:設定集區「健康情況」► 「啟用快速失敗保護」調整失敗計數/時間間隔。
成因四:Access 資料庫引擎災難性故障
- 現象:所有使用 Access (MDB) 的網站同時掛掉;事件記錄無 IIS 錯誤,但檔案系統記錄出現「災難性失敗」、「未將物件參考設定為物件的實例」。
- 解決:執行「伺服器醫生」►「檔案醫生」修復系統檔案;或重新註冊
msjetoledb40.dll、dao360.dll;極端情況重啟 IIS (iisreset)。
成因五:ISAPI 篩選器載入失敗
- 現象:任意網站一存取即出現 Service Unavailable;事件記錄出現 ISAPI 篩選器載入失敗訊息。
- 解決:IIS 管理員 ► 網站屬效 ► 「ISAPI 篩選器」► 移除失敗的篩選器;或修正篩選器 DLL 路徑/權限/相依性。
進階:應用程式集區身分識別設定導致 Service Unavailable
若將集區身分識別從 Network Service 改為自訂網域帳號,必須:
- 帳號加入
IIS_WPG 群組。
- 本地安全性原則 ► 「本地原則」►「使用者權限指派」►「作為服務登入」加入該帳號。
- 重新開機生效。
否則會出現事件 ID 1057/1059/534 錯誤,集區無法啟動。
快速排查流程圖
- 刷新幾次能恢復 → 成因一/二/三(資源/錯誤限制)。
- 所有 Access 網站全掛 → 成因四(引擎故障)。
- 全部網站全掛且事件有 ISAPI 錯誤 → 成因五。
- 剛改集區身分識別 → 檢查 IIS_WPG 與「作為服務登入」。