工作管理器顯示 CPU 長期 100%,系統嚴重卡頓。這類問題多半由特定進程失控引起。本文深度剖析兩大經典案例——dllhost.exe 與 svchost.exe 佔滿 CPU 的成因、診斷流程與解決方案。
案例一:dllhost.exe 佔用 100% CPU——ASP 應用程式死結
現象
伺服器正常 CPU 應 < 75% 且波動,故障時 CPU 瞬間飆升 100% 且持平不降。工作管理器顯示 `DLLHOST.EXE` 佔用所有閒置 CPU 時間。重啟 IIS 暫時恢復,但過段時間復發。
根本原因
一個或多個 Access 資料庫(`.mdb`)在頻繁讀寫中損壞。MDAC 元件寫入損壞資料庫時,ASP 執行緒進入 BLOCK 狀態,其他執行緒只能等待,導致 IIS 死結,所有 CPU 時間耗在 `DLLHOST` 處理死結。
解決流程
- 安裝「一流資訊監控攔截系統」中的「首席檔案檢查官 IIS 健康檢查官」。
- 啟用「查找死結模組」,設定 `wblock=yes`,監控目錄指向網站根目錄(如 `d:\wwwroot`)。
- 停止 IIS → 啟動檢查官 → 重新啟動 IIS。工具會在 `log\logblock.htm` 記錄最後寫入的 Access 檔案。
- 故障復發時,停止 IIS,檢查日誌最後 10 筆記錄,重點關注計數器類資料庫(如 `**COUNT.MDB`、`**COUNT.ASP`)。
- 刪除可疑檔案至資源回收筒,重啟 IIS 觀察;若問題解決,確認該檔案為禍首。最終刪除或用 Access 2000「修復資料庫」功能修復該 `.mdb`。
案例二:svchost.exe 佔用 100% CPU——木馬/病毒偽裝或服務異常
排查木馬偽裝
- 檢查 `win.ini` `[Windows]` 區段 `run=`、`load=` 後是否有陌生路徑。
- 檢查 `system.ini` `[Boot]` 區段 `shell=` 是否為 `explorer.exe` 以外的值。
- 註冊表 `HKLM\Software\Microsoft\Windows\CurrentVersion\Run` 及 `HKCU` 同路徑,查找陌生 `.exe` 鍵值。注意偽裝名(如 `expiorer.exe` 模仿 `explorer.exe`)。
病毒特徵:Code Red II / VirtualRoot 蠕蟲
利用 IIS 溢位漏洞透過 80 埠傳播,感染機器可被駭客透過 `scripts/root.exe` 取得完全控制權。表現為 `svchost.exe` 高 CPU。
通用解決步驟
- 更新病毒碼全盤掃描殺毒。
- 使用 `Tasklist /SVC` 查看 `svchost.exe` 載入的服務,識別異常服務。
- 用 `Taskkill /F /PID ` 強制結束惡意進程。
- 修補 IIS 漏洞、關閉不必要服務、啟用防火牆。
掌握「觀察進程→定位模組/服務→查閱日誌/掃毒→精準修復」流程,CPU 100% 難題不再是謎。