Windows實(shí)例中CPU使用率較高問題的排查及解決方法
概述
本文主要介紹Windows實(shí)例中CPU使用率較高問題的排查及解決方法。
詳細(xì)信息
- 如果您對(duì)實(shí)例或數(shù)據(jù)有修改、變更等風(fēng)險(xiǎn)操作,務(wù)必注意實(shí)例的容災(zāi)、容錯(cuò)能力,確保數(shù)據(jù)安全。
- 如果您對(duì)實(shí)例(包括但不限于ECS、RDS)等進(jìn)行配置與數(shù)據(jù)修改,建議提前創(chuàng)建快照或開啟RDS日志備份等功能。
- 如果您在阿里云平臺(tái)授權(quán)或者提交過登錄賬號(hào)、密碼等安全信息,建議您及時(shí)修改。
本文主要通過如下步驟進(jìn)行介紹。
- 定位問題。找到影響CPU使用率過高的具體進(jìn)程。
-
分析處理。排查影響CPU使用率過高的進(jìn)程是否正常,并分類進(jìn)行處理。
- 對(duì)于正常進(jìn)程:您需要對(duì)程序進(jìn)行優(yōu)化或者升級(jí)服務(wù)器配置。
- 對(duì)于異常進(jìn)程:您可以手動(dòng)對(duì)進(jìn)程進(jìn)行查殺,也可以使用第三方安全工具去查殺。
- 操作示例。介紹具體排查及解決方法的流程。
- 更多信息。介紹排查工具的使用。
定位問題
微軟有多個(gè)工具可以定位CPU使用率過高的問題,例如任務(wù)管理器、資源監(jiān)視器(Resource Monitor)、性能監(jiān)視器(Performance Monitor)、Process Explorer、Xperf(Windows server 2008 以后)、KernRate(Windows server 2003),抓取系統(tǒng)Full Memory Dump進(jìn)行檢查。在流量大的情況下,您還可以使用Wireshark抓取一段時(shí)間的網(wǎng)絡(luò)包,分析流量使用情況。
提示:Windows Server 2008以上系統(tǒng),通常使用系統(tǒng)自帶的資源監(jiān)視器監(jiān)控CPU。
- 在桌面底部單擊 開始 菜單,選擇 運(yùn)行。
-
打開運(yùn)行框后,在框中輸入perfmon -res,并單擊 確定。
-
在資源監(jiān)視器頁(yè)面中,查看各進(jìn)程是否有CPU使用率過高的現(xiàn)象。
- 針對(duì)占用資源較高的進(jìn)程,查看對(duì)應(yīng)的進(jìn)程ID和進(jìn)程的程序名。
- 定位進(jìn)程ID后,結(jié)合任務(wù)管理器判斷程序是否異常并定位程序的具體位置。
分析處理
CPU使用率過高的分析處理
您需要判斷影響CPU使用率過高的進(jìn)程,屬于正常進(jìn)程還是異常進(jìn)程,并分類進(jìn)行處理。
正常使用率過高的分析處理
正常情況下,當(dāng)客戶頻繁訪問業(yè)務(wù),或由于Windows自身服務(wù)(更新服務(wù)等)都可能會(huì)占用較高網(wǎng)絡(luò)流量和CPU 。針對(duì)正常進(jìn)程導(dǎo)致的CPU使用率過高的情況,請(qǐng)按照如下順序逐一進(jìn)行排查。
提示:Windows Server 2008或Windows Server 2012實(shí)例建議內(nèi)存配置在2G或者2G以上。
- 檢查后臺(tái)是否有執(zhí)行Windows Update的行為。
- 建議在服務(wù)器上安裝殺毒軟件,進(jìn)行殺毒。如有安裝殺毒軟件,請(qǐng)檢查CPU飆高時(shí),殺毒軟件是否在后臺(tái)執(zhí)行掃描操作。如果可能,請(qǐng)升級(jí)殺毒軟件到最新版本,或者刪除殺毒軟件。
- 檢查該ECS內(nèi)應(yīng)用程序是否有大量的磁盤訪問、網(wǎng)絡(luò)訪問行為或高計(jì)算需求。通過嘗試增配實(shí)例規(guī)格的方式,使用更多核數(shù)或內(nèi)存的規(guī)格來(lái)解決資源瓶頸問題,如升級(jí)配置。
-
若自身服務(wù)器配置較高,再去升級(jí)配置已經(jīng)沒有太大意義。架構(gòu)方面也并非是服務(wù)器配置越高就越好。此時(shí),您需要嘗試進(jìn)行應(yīng)用分離,同時(shí)對(duì)相關(guān)程序進(jìn)行優(yōu)化。示例說明如下。
問題描述:當(dāng)一個(gè)服務(wù)器上面同時(shí)部署了MySQL、PHP、Web等多種應(yīng)用,即使配置比較高,也很容易出現(xiàn)資源負(fù)載異常。
解決方法:嘗試應(yīng)用分離,通過不同的服務(wù)器去承載不同的應(yīng)用。比如數(shù)據(jù)庫(kù)完全通過RDS來(lái)承載,減輕服務(wù)器本身的資源消耗和服務(wù)器內(nèi)部大量的調(diào)用。而程序優(yōu)化方面,您可以根據(jù)自身的配置狀況進(jìn)行調(diào)整,比如調(diào)整連接數(shù)和緩存配置,以及Web和數(shù)據(jù)庫(kù)調(diào)用時(shí)的各項(xiàng)參數(shù)等。
異常使用率過高的分析處理
對(duì)于CPU異常使用率過高的情況,可能是被惡意病毒、木馬入侵導(dǎo)致的。有時(shí)三方惡意程序可能會(huì)利用操作系統(tǒng)的svchost.exe或者Tcpsvcs.exe來(lái)偽裝,引起高CPU的占用。您需要手動(dòng)對(duì)異常進(jìn)程進(jìn)行查殺。
提示:若您無(wú)法判斷進(jìn)程是否為病毒或木馬,建議將進(jìn)程名稱在網(wǎng)上進(jìn)行搜索后確認(rèn)。另外,建議您進(jìn)行進(jìn)程刪除操作前,提前創(chuàng)建快照完成備份。
- 使用商業(yè)版殺毒軟件,或使用微軟免費(fèi)安全工具M(jìn)icrosoft Safety Scanner,在安全模式下進(jìn)行掃描殺毒,工具鏈接如下所示。
- 運(yùn)行Windows Update來(lái)安裝最新的微軟安全補(bǔ)丁。
- 使用MSconfig禁用所有非微軟自帶服務(wù)驅(qū)動(dòng),檢查問題是否再次發(fā)生。
- 若服務(wù)器或站點(diǎn)遭受DDoS攻擊或CC攻擊等,短期內(nèi)產(chǎn)生大量的訪問需求。您可以登錄云安全中心,查看云盾中的防護(hù)DDoS攻擊是否調(diào)整好閾值,并核實(shí)是否開啟CC防護(hù)。如果攻擊沒有觸發(fā)到閾值,云盾沒有清洗,可以聯(lián)系售后協(xié)助開起清洗。
操作示例
CPU使用率較高的可能原因如下。
- 病毒木馬入侵。
- 第三方殺毒軟件運(yùn)行。
- 應(yīng)用程序異常、驅(qū)動(dòng)異常、高I/O使用率或高中斷處理的應(yīng)用程序。
提示:在使用Windows Server 2012的1核1GB規(guī)格的實(shí)例時(shí),Windows Update服務(wù)會(huì)自動(dòng)更新,實(shí)例的CPU使用率也會(huì)突然升高,這是正?,F(xiàn)象。
解決方案
提示:本文大量引用Microsoft的官方文檔和工具鏈接,版權(quán)和所屬權(quán)歸Microsoft所有,并請(qǐng)充分考慮Microsoft Windows產(chǎn)品迭代或者文檔未及時(shí)更新可能帶來(lái)的問題。
- CPU使用率較高時(shí),檢查后臺(tái)是否正在執(zhí)行Windows Update的進(jìn)程。
- 檢查殺毒軟件在后臺(tái)是否正在執(zhí)行掃描操作??梢陨?jí)殺毒軟件到最新版本,或者刪除殺毒軟件。
- 單擊 運(yùn)行,然后輸入 MSCONFIG,禁用所有非Microsoft自帶服務(wù)驅(qū)動(dòng),然后檢查問題是否再次發(fā)生。相關(guān)參考文檔如下。
- 使用商業(yè)版殺毒軟件或Microsoft安全掃描程序在安全模式下掃描殺毒。關(guān)于Microsoft安全掃描程序的參考文檔如下。
- 運(yùn)行Windows Update安裝最新Microsoft安全補(bǔ)丁。
- 當(dāng)ECS實(shí)例有大量的磁盤訪問、網(wǎng)絡(luò)訪問和高計(jì)算需求時(shí),CPU使用率較高是正?,F(xiàn)象,可以通過升級(jí)實(shí)例規(guī)格的方式以應(yīng)對(duì)資源不足問題。
- 更多解決方法可參考如下Microsoft文檔。
更多信息
以下是關(guān)于Windows實(shí)例排查工具推薦的相關(guān)內(nèi)容。
任務(wù)管理器
-
直觀檢查應(yīng)用程序列表,定位占用CPU較高的應(yīng)用程序,如下是任務(wù)管理器頁(yè)面。
-
在性能頁(yè)面檢查CPU使用率時(shí),右鍵單擊CPU使用率圖示,單擊 將圖形更改為 > 邏輯處理器。如下圖顯示了4個(gè)邏輯CPU的使用率。
- 當(dāng)單個(gè)進(jìn)程的CPU使用率飆升至接近100%時(shí),而其它進(jìn)程的CPU使用率變化不大,則可能是網(wǎng)絡(luò)I/O處理造成的。
資源監(jiān)視器
直觀檢查CPU使用率,還可以通過句柄和模塊搜索對(duì)應(yīng)的進(jìn)程。
Process Explorer
- Process Explorer是一款Microsoft Sysinternals工具,通過配置正確的Symbols,檢查對(duì)應(yīng)應(yīng)用程序的線程調(diào)用的Call Stack,用以定位可能的問題驅(qū)動(dòng)。下載Process Explorer工具鏈接如下。
-
如下是Process Explorer工具使用頁(yè)面。
性能監(jiān)視器
- 性能監(jiān)視器(Performance Monitor)是Microsoft專業(yè)收集各個(gè)組件性能計(jì)數(shù)器的工具。對(duì)于系統(tǒng)CPU資源消耗,有多個(gè)Counter來(lái)檢查。通過單擊 開始 > 運(yùn)行 > perfmon,打開性能監(jiān)視器。
-
Performance有如下三個(gè)核心參數(shù)。其中\(zhòng)Processor(_Total)\% Processor Time是\Processor(*)\%
User Time與\Processor(*)\% Privileged Time之和。
- \Processor(_Total)\% Processor Time
- \Processor(*)\% User Time
- \Processor(*)\% Privileged Time
-
\Processor(*)\% Privileged
Time是應(yīng)用程序在內(nèi)核中執(zhí)行系統(tǒng)調(diào)用(例如驅(qū)動(dòng)、IRP,上下文切換等)操作的時(shí)間。如果操作系統(tǒng)花費(fèi)多余30%的時(shí)間在Privileged
Time,如下圖所示,則說明實(shí)例正在進(jìn)行高I/O吞吐相關(guān)的操作。
- 當(dāng)% Privileged Time很高時(shí),需要進(jìn)一步檢查% DPC Time、% Interrupt Time以及Context Switches/sec的情況。
- 高% DPC Time、% Interrupt Time意味著未知設(shè)備出現(xiàn)大量的操作或者很差的性能問題,請(qǐng)參考如下文檔。
- 高Context Switches/sec意味著有大量的線程處于Ready狀態(tài),需要減少線程的數(shù)量解決問題。
- % DPC Time、% Interrupt Time很高時(shí),需使用Microsoft Xperf工具進(jìn)一步分析,請(qǐng)參考如下文檔使用XPerf工具。
- \Processor(*)\% User Time表示處理器用于執(zhí)行程序代碼的時(shí)間消耗,可以確定哪個(gè)應(yīng)用程序或函數(shù)調(diào)用消耗了較多的時(shí)間。
-
高User Time情況如下圖所示。
如果您有其他問題,可以聯(lián)系北京優(yōu)勝智連阿里云代理商,為您提供一對(duì)一專業(yè)全面的技術(shù)服務(wù),同時(shí)新老阿里云會(huì)員,均可享受我公司代理商價(jià)格,歡迎咨詢!




