IIS故障成因複雜,涉及服務啟動、進程崩潰、站點綁定、協議棧、應用程序池等多層面。本文提供系統化排錯方法論、核心操作步驟,並收錄完整HTTP錯誤代碼對照表,作為網管案頭必備參考。
所有IIS錯誤(服務啟動失敗、進程中斷、站點無法啟動)均在「系統日誌」/「應用程序日誌」記錄事件。確定排錯方案前,必先查閱事件查看器,按Event ID、Source(W3SVC、IISADMIN、ASP.NET等)篩選。
IIS 5.0新增「無需重啟OS重啟IIS」功能,通過重置進程內存空間解決內存洩漏、佇列阻塞、COM組件掛起等問題。
適用場景: Web應用程序癱瘓不可控、工作不穩定、內存異常增長。
操作步驟:
注意: 重啟過程中所有當前連接斷開、所有站點不可用。無法通過HTML遠程管理介面執行此操作。若重啟IIS無效,重啟OS通常也無效,需深入排查代碼/配置/硬件。
僅單站點不穩定時,右鍵站點 → 「停止」 → 再「啟動」,避免影響其他業務。
IIS配置存儲於Metabase(元數據庫)與註冊表。備份即保存站點綁定、虛擬目錄、應用程序池、認證設置等所有配置。
Pre_Change_20240115) → 確定%windir%\system32\inetsrv\MetaBack\cscript.exe X:\InetPub\AdminScripts\Adsutil.vbs enum w3svc 記錄 WamUserName 與 WAMUserPassIWAM_<機器名> → 設置密碼為上一步記錄的 WAMUserPass此步驟確保IWAM帳號密碼與Metabase同步,否則還原後ASP/COM+應用將無法啟動。
當IIS服務正常但站點無法訪問,優先排查TCP/IP棧。
ipconfig # 基本IP/掩碼/網關 ipconfig /all # 完整信息:主機名、DNS、WINS、DHCP、MAC、節點類型 ipconfig /renew # 刷新DHCP租約 ipconfig /release # 釋放DHCP配置
Win95/98使用 winipcfg 圖形工具。
ping 127.0.0.1 → 本地TCP/IP棧完整性ping <本機IP> → 本機IP配置正確性ping <默認網關> → 能否跨子網通信ping <遠程主機> → 端到端路由通暢性全通 → TCP/IP配置支持網絡通信;任一失敗 → 針對性檢查網卡/驅動/交換機/路由/防火牆。
netstat -a # 所有連接/監聽端口 netstat -n # 數字顯示IP/端口(不解析名稱,速度快) netstat -r # 路由表 netstat -e # 乙太網統計(錯誤包、衝突包) netstat -s # 各協議統計(TCP/UDP/ICMP/IP)
關注 SYN_RCVD 堆積(SYN Flood特徵)、TIME_WAIT 大量佔用(需調整 TcpTimedWaitDelay)。
| 代碼 | 含義 | 子代碼細分 |
|---|---|---|
| 400 | 無法解析請求(語法錯誤) | - |
| 401 | 未授權 | 401.1 憑證無效 / .2 服務器配置拒絕 / .3 ACL拒絕 / .4 篩選器授權失敗 / .5 ISAPI/CGI授權失敗 / .7 URL授權策略拒絕 |
| 403 | 禁止訪問 | 403.1 執行被拒 / .2 讀取被拒 / .3 寫入被拒 / .4 需SSL / .5 需SSL128 / .6 IP被拒 / .7 需客戶端證書 / .8 DNS名被拒 / .9 連接數超限 / .10 配置拒絕執行 / .11 密碼已改 / .12 證書映射器拒絕 / .13 證書吊銷 / .14 目錄列表被拒 / .15 客戶端許可證超限 / .16 證書格式錯/不信任 / .17 證書過期/未生效 / .18 應用程序池無法執行URL / .19 應用程序池無法執行CGI / .20 Passport登錄失敗 |
| 404 | 找不到文件/目錄 | 404.1 站點無法在請求端口訪問(多IP場景:未在該IP綁定該端口) |
| 代碼 | 含義 | 常見原因 |
|---|---|---|
| 500 | 內部服務器錯誤 | ASP/PHP/.NET代碼異常、COM組件失敗、權限不足、配置錯誤、元數據庫損壞 |
| 501 | 未實現 | 不支持的HTTP方法 |
| 502 | 錯誤網關 | 反向代理/上游服務器無響應 |
| 503 | 服務不可用 | 應用程序池停止、佇列滿、服務器維護模式 |
| 504 | 網關超時 | 上游響應超時 |
w3wp.exe 崩潰/掛起時的完整內存轉儲,配合WinDbg分析托管/非托管堆棧系統化排錯,拒絕盲目重啟。掌握日誌語言、錯誤代碼字典與工具鏈,是從「重啟工程師」進階為「架構級運維」的必經之路。