系統知識網 系統知識 svchost.exe占用cpu高50%如何解決?

svchost.exe占用cpu高50%如何解決?

大傢都知道在Windows系統中svchost.exe進程是系統進程,而且會有很多個,一般來說並不會影響系統性能,不過某些情況下出現svchost.exe占用cpu高達到25%甚至50%的情況也會出現,這時該怎麼解決呢?本文由svchost。

大傢都知道在Windows系統中svchost.exe進程是系統進程,而且會有很多個,一般來說並不會影響系統性能,不過某些情況下出現svchost.exe占用cpu高達到25%甚至50%的情況也會出現,這時該怎麼解決呢?本文由svchost.exe的運行原理說起,然後幫助大傢解決svchost.exe占用CPU高的問題。

故障圖如下:

SVCHOST.EXE 位於Windows\system32系統文件夾,其文件描述為“Generic Host Process for Win32 Services”。當Windows啟動時,SVCHOST.EXE將自動檢查Windows註冊表的系統服務組成、構建系統服務列表,然後將相關的.DLL動態鏈接庫文件加載為具體的運行中的系統服務。因此,我們可以將SVCHOST.EXE看作一個“用於加載系統服務的宿主程序”

由於每個SVCHOST.EXE進程可能會加載一個或若幹個系統服務,直到所有的SVCHOST.EXE將全部系統服務加載完畢,所以我們會在任務管理器中看到多個SVCHOST.EXE同時運行,這是設計使然。一般地,Windows XP/Windows Server 2003可能會有不超過六個SVCHOST.EXE同時運行;而Windows Vista/Windows Server 2008/Windows 7會有不少於十個SVCHOST.EXE同時運行。

當您在Windows任務管理器中查看 SVCHOST.EXE進程時,SVCHOST.EXE進程的“用戶名”應該顯示為SYSTEM、LOCAL SERVICE或NETWORK SERVICE。(如果在任務管理器中看不到“用戶名”,請在菜單中選擇“查看”-“列設置”,選中“用戶名”復選框。)如果某個SVCHOST.EXE 進程的“用戶名”顯示的是用戶帳戶的名稱(例如Administrator),則這個SVCHOST.EXE很可能是冒仿的惡意程序。

另外您需要確認,您看到的SVCHOST.EXE進程的名稱拼寫是否有誤。比如假設顯示的進程名稱是SVCH0ST.EXE(用數字0替換瞭字母O),則很可能是冒仿的惡意程序;再比如進程的名稱雖然是SVCHOST.EXE,但此進程卻沒有位於Windows\system32(Windows Vista以上版本的任務管理器可以查看進程所在的文件夾路徑),則也可能是冒仿的惡意程序。

由於SVCHOST.EXE是加載系統服務的宿主進程,所以您如果發現某SVCHOST.EXE進程占用的系統資源較多,即表明通過這個 SVCHOST.EXE進程加載的系統服務占用的系統資源較多。您首先需要確定通過這個SVCHOST.EXE進程加載的系統服務具體是什麼,然後根據計算機的實際情況決定是否關閉相應的系統服務、以釋放服務占用的系統資源,這樣SVCHOST.EXE即可釋放相應的系統資源。

雖然大多數系統服務隻有在遇到故障時才會占用較高的系統資源,但某些特殊的服務即使是正常工作狀態也將消耗較多系統資源。例如Automatic Updates自動更新服務,當自動更新在後臺搜索可用的系統更新程序時必將占用較高的資源,這是設計使然而不是故障。

判斷一個SVCHOST.EXE加載瞭哪些系統服務有兩種方法

判斷方法一:

1、在Windows任務管理器的“進程”選項卡中查看占用資源較高的SVCHOST.EXE進程對應的PID,將PID記下。(如果在任務管理器中看不到“PID”,請在菜單中選擇“查看”-“列設置”,選中“PID”復選框。)

2、以管理員權限運行命令提示符(CMD.EXE),在命令提示符中執行:

TASKLIST –SVC

您將看到類似如下所示的結果:

圖像名 PID 服務
SVCHOST.EXE 1104 DcomLaunch,TermServices
SVCHOST.EXE 1188 RpcSs
……

3、對照您在任務管理器中看到的SVCHOST.EXE的PID,在上述結果中查找對應的 SVCHOST.EXE。例如,假設您在任務管理器中看到PID為1188的SVCHOST.EXE占用瞭較多系統資源,而TASKLIST –SVC的結果顯示PID為1188的SVCHOST.EXE加載的服務是RpcSs,即表明RpcSs服務(Remote Procedure Call (RPC)服務)占用瞭較高的系統資源。

判斷方法二:

1、在microsoft.com下載系統工具Process Explorer:

http://www.microsoft.com/technet/sysinternals/Utilities/ProcessExplorer.mspx www.系统知识网.com(http://www.microsoft.com/technet/sysinternals/Utilities/ProcessExplorer.mspx)

2、運行Process Explorer,在進程列表中找到占用系統資源較多的SVCHOST.EXE進程,右鍵單擊選擇Properties(屬性),切換至Services(服務)選項卡,在這裡即可查看SVCHOST.EXE進程加載的系統服務是什麼。

當我們判斷完成後,定位到加載的服務我償可以打開本地服務,然後嘗試停止服務再啟動一般就可以解決問題瞭。解決案例:

通常情況下,網絡不好時Windows自動更新服務可能會失敗,導致其反復重試,結果CPU負載極高。其表現為:系統啟動幾分鐘後 svchost.exe就會占100% cpu資源,但是拔掉網線就好瞭。

解決辦法:

1、進入安全模式
2、刪除C:\WINDOWS\SoftwareDistribution下面所有的文件重啟機器,
3、 打開控制面板->管理工具->服務,找到【自動更新(Automatic Updates)】,設成手動更新或者關閉自動更新,
4、重啟機器,刪除C:\WINDOWS\SoftwareDistribution下面的文件,這時再在控制面板裡恢復自動更新設置。

當然不同的問題要用不同的方法來解決,多搜索網絡上可能都會解決答案。

返回顶部