svchost.exe 占 CPU 99% 的解決方案 作者:jothui 日期:2007-04-23
svchost.exe 佔用CPU資源100%的現象確實讓我頭疼了好多次,每次解決方案也是非常簡單,我都是把系統Windows Update的自動升級關閉掉,然後升級都是通過手動去做,但是今天發現了更簡單的方式,綜合看了看很多人的解決方案,我把這些方法也拿過來供自己學習和給大家參考,希望以後碰到這樣的問題就已經是比上眼睛也能搞定了:
現象:
- 機器運行過程中突然變得很慢,一看進程 svchost.exe占系統cpu資源的100%
- 拔掉網線就好了,重連上網後一會兒:svchost.exe又佔cpu資源的99%
- 把系統的 Windows Update 關閉以後,問題解決解決:
首先你使用免費殺毒軟體排除了病毒和使用防間諜軟體排除了惡意軟體的影響,這兩個問題也是會經常造成svchost.exe 佔用系統cpu大量的資源,首先排出這個原因,不過也可以先嘗試下這個方法,在去確認是不是病毒或惡意軟體。
解決方案:想辦法清空C:/WINDOWS/SoftwareDistribution 目錄下所有的檔案重啟機器即可。
如果機器提示檔案正在使用("Automatic Updates"服務正在運行)無法刪除相應目錄:
- 則開啟控制台-->管理工具-->服務,找到"Automatic Updates",設定成手動啟動,
- 重啟後再刪除 C:/WINDOWS/SoftwareDistribution ,問題就解決了。
- 然後再開啟控制台-->管理工具-->服務,找到 "Automatic Updates" ,恢複成自動啟動重啟。
原因分析:
先說說什麼是svchost.exe:很多系統服務都要依靠這個進程啟動而啟動,如果沒有它,我們系統會很多東西用不了,比如簡沒有這個服務機器幾乎就上不了網了。很多應用服務都是依賴於這個介面RPC的,如果發現這個進程佔了太多的CPU資源,
直接把系統的RPC服務禁用了系統就完蛋了:因為連恢複這個介面的系統服務設定介面都無法使用了。恢複的方法需要使用登錄編輯程式,找到 HKEY_LOCAL_MACHINE >SYSTEM > CurrentControlSet > Services>RpcSs, 右側找到Start屬性,把它的值改為2再重啟即可
造成svchost占系統CPU 100%的原因並非svchost服務本身:以上的情況是由於Windows Update服務下載/安裝失敗而導致更新服務反覆重試造成的。而Windows的自動更新也是依賴於svchost服務的一個後台應用,從而表現為svchost.exe負載極高。 常發生這類問題的機器一般是上網條件不穩定的機器,每個月的第二個星期是高發期:因為最近幾年微軟很有規律的在每個月的第二個星期發布補丁程式。
上面的解決方案並不能保證不重發作,但是為了svchost檔案而每隔幾個月重裝一次作業系統還是太浪費時間了。
以前也碰到過spoolsv.exe 佔cpu 99%的解決方案,windows讓我們確實很頭疼。
這裡還有一個方法可以用來解決這個問題,我把它拿過來供參考:
Wake up and smell the Coffee>>吃掉所有CPU資源的 svchost.exe
年回到家後發現,家裡的 PC 和老媽的 Notebook ,莫名其妙的都會被 svchost.exe 佔用掉所有的 CPU 資源(難怪老媽一直跟我抱怨新買的 Notebook 總是跑的很慢 XD)。一看到這個情況,腦中馬上浮現「不會是中毒了吧」的念頭,於是在 CPU 使用率總是停在100%的狀態下,花了半天的時間才把兩台電腦做掃毒、掃木馬以及Windows Update。結果當然,事情不是憨人想的那麼簡單,好幾個小時換來的代價就是,連個子兒都沒掃到,神秘的svchost.exe仍舊霸道地侵佔我的CPU。無可耐何之下只好求助Google大神,試了好多種解法都禺用,不過總算是皇天不負苦心人,最後還是讓我找到瞭解決的方法。
svchost.exe 吃掉所有 CPU 資源的原因很多,不過我的狀況都是在執行 Windwos Update 時發生的(或是自動更新服務 Automatic Updates 執行時)。因此解決方法主要就是把 Windows 的自動更新重設一次,步驟如下:
一、首先檢查系統服務的狀態。
1. 點「開始」–>「執行」,輸入「services.msc」後按「確定」。
2. 在服務「Automatic Updates」上點二下。
3. 點選「登入」頁籤,確定登入身分為「本機系統帳戶」且「允許服務與案頭互動」“沒有”被選取。
4. 確認服務已在目前的「硬體設定檔」中被啟用,如果沒有,按下「啟用」按鈕。
5. 點選「一般」頁籤,確定「啟動類型」為「自動」,然後按下「啟動」按鈕以啟動服務。
6. 對「Background Intelligent Transfer Service (BITS) 」服務重覆 2 ~ 5 的步驟。
二、接著重新註冊 Windwos Update 的元件。
1. 點選「開始」–>「執行」。
2. 輸入「REGSVR32 WUAPI.DLL」後按 Enter。
3. 當看到 “DllRegisterServer 在 WUAPI.DLL 成功” 的訊息後按下「確定」。
4. 重覆上述步驟重新註冊下列元件
REGSVR32 WUAUENG.DLL
REGSVR32 WUAUENG1.DLL
REGSVR32 ATL.DLL
REGSVR32 WUCLTUI.DLL
REGSVR32 WUPS.DLL
REGSVR32 WUPS2.DLL
REGSVR32 WUWEB.DLL
三、最後清除可能已損壞了的 Windows Update 暫存目錄。
1. 點「開始」–>「執行」,輸入「cmd」後按「確定」。
2. 在命令提示字元中鍵入以下指令。(若出現錯誤訊息請先重開機後再報執行一次)
net stop WuAuServ
2. 點「開始」–>「執行」,輸入「%windir%」後按「確定」。
3. 找到「SoftwareDistribution」並更名為「SDold」。
4. 點「開始」–>「執行」,輸入「cmd」後按「確定」,並在在命令提示字元中鍵入以下指令。
net start WuAuServ
四、大功告成!
參考資料:
- svchost.exe CPU Usage 100%, when my Windows using Automatic Update
- svchost.exe 吃掉所有 CPU 資源
- svchost.exe占CPU 100%的解決方案