Windows系統(tǒng)ECS實(shí)例中CPU使用率較高問(wèn)題的排查及解決方案
本文主要介紹Windows系統(tǒng)ECS實(shí)例中CPU使用率較高問(wèn)題的排查及解決方案。
問(wèn)題現(xiàn)象
Windows系統(tǒng)ECS實(shí)例中CPU使用率較高,即CPU使用率≥80%。
問(wèn)題原因
CPU使用率較高可能有以下原因。
ECS實(shí)例遭到病毒木馬入侵。
ECS實(shí)例中第三方殺毒軟件運(yùn)行。
ECS實(shí)例中應(yīng)用程序異常、驅(qū)動(dòng)異常、高I/O使用率或高中斷處理的應(yīng)用程序。
解決方案
步驟一:定位問(wèn)題
通過(guò)微軟工具(任務(wù)管理器、資源監(jiān)視器等)抓取系統(tǒng)Full Memory Dump,來(lái)定位CPU使用率過(guò)高的問(wèn)題。在流量大的情況下,您還可以使用Wireshark抓取一段時(shí)間的網(wǎng)絡(luò)包,分析流量使用情況。
本文以Windows Server 20222系統(tǒng)資源監(jiān)視器為例,介紹如何定位CPU使用率較高的問(wèn)題。其他常見(jiàn)工具,請(qǐng)參見(jiàn)常見(jiàn)工具。
通過(guò)VNC方式連接ECS實(shí)例。
具體信息,請(qǐng)參見(jiàn)使用VNC登錄實(shí)例。
在桌面底部單擊開(kāi)始菜單,選擇運(yùn)行。
在運(yùn)行框中輸入
perfmon -res
,單擊確定。在資源監(jiān)視器頁(yè)面中,查看各進(jìn)程是否有CPU使用率過(guò)高的現(xiàn)象。
針對(duì)占用CPU資源較高的進(jìn)程,查看對(duì)應(yīng)的進(jìn)程ID和進(jìn)程的程序名。
打開(kāi)任務(wù)管理器,任務(wù)管理器的詳細(xì)信息頁(yè)簽下,找到之前資源監(jiān)視器查看到的異常進(jìn)程名和對(duì)應(yīng)的PID。右鍵單擊進(jìn)程名稱,選擇打開(kāi)文件所在的位置(O),查看進(jìn)程是否為惡意程序。
步驟二:分析處理
判斷影響CPU使用率過(guò)高的進(jìn)程屬于正常進(jìn)程或是異常進(jìn)程,并按照下述相應(yīng)步驟處理。
可能原因 | 具體操作 |
正常進(jìn)程 | 一般情況下,當(dāng)頻繁訪問(wèn)業(yè)務(wù),或由于Windows自身服務(wù)(更新服務(wù)等)都可能會(huì)占用較高網(wǎng)絡(luò)流量和CPU 。 說(shuō)明
|
異常進(jìn)程 | 對(duì)于CPU異常使用率過(guò)高的情況,可能是被惡意病毒、木馬入侵導(dǎo)致的。有時(shí)三方惡意程序可能會(huì)利用操作系統(tǒng)的svchost.exe或者Tcpsvcs.exe來(lái)偽裝,引起高CPU的占用。您需要手動(dòng)對(duì)異常進(jìn)程進(jìn)行查殺。 說(shuō)明 若您無(wú)法判斷進(jìn)程是否為病毒或木馬,建議將進(jìn)程名稱在網(wǎng)上進(jìn)行搜索后確認(rèn)。另外,建議您進(jìn)行進(jìn)程刪除操作前,創(chuàng)建快照完成備份。具體操作,請(qǐng)參見(jiàn)創(chuàng)建一個(gè)云盤(pán)快照。
|
常見(jiàn)工具
以下是關(guān)于Windows系統(tǒng)中定位CPU使用率過(guò)高問(wèn)題工具的簡(jiǎn)要說(shuō)明。
任務(wù)管理器
任務(wù)管理器可以直觀查看應(yīng)用程序列表,定位占用CPU較高的應(yīng)用程序,如下是任務(wù)管理器頁(yè)面。
在性能頁(yè)面檢查CPU使用率時(shí),右鍵單擊CPU使用率圖示,單擊
。如下圖顯示了2個(gè)邏輯CPU的使用率。
當(dāng)單個(gè)進(jìn)程的CPU使用率飆升至接近100%時(shí),而其它進(jìn)程的CPU使用率變化不大,則可能是網(wǎng)絡(luò)I/O處理造成的。
資源監(jiān)視器
資源監(jiān)視器可以直觀查看CPU使用率,還可以通過(guò)句柄和模塊搜索對(duì)應(yīng)的進(jìn)程。
Process Explorer
Process Explorer是一款Microsoft Sysinternals工具,通過(guò)配置正確的Symbols,檢查對(duì)應(yīng)應(yīng)用程序的線程調(diào)用的Call Stack,用以定位可能的問(wèn)題驅(qū)動(dòng)。下載Process Explorer工具,請(qǐng)參見(jiàn)Process Explorer。
如下圖是Process Explorer工具使用頁(yè)面。
性能監(jiān)視器
性能監(jiān)視器(Performance Monitor)是Microsoft專業(yè)收集各個(gè)組件性能計(jì)數(shù)器的工具。對(duì)于系統(tǒng)CPU資源消耗,有多個(gè)Counter來(lái)檢查。
Performance有如下三個(gè)核心參數(shù)。
\Processor(_Total)\% Processor Time
:CPU執(zhí)行非空閑線程的時(shí)間百分比。\Processor(_Total)\% Processor Time
=\Processor(*)\% User Time
+\Processor(*)\% Privileged Time
.\Processor(*)\% User Time
:表示處理器用于執(zhí)行程序代碼的時(shí)間消耗,可以確定哪個(gè)應(yīng)用程序或函數(shù)調(diào)用消耗了較多的時(shí)間。\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
,則說(shuō)明實(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)大量的操作或者很差的性能問(wèn)題。更多詳情,請(qǐng)參見(jiàn)Choose Your Own Adventure: High Deferred Procedure Calls (DPCs) or High Interrupts和Windows IT Pro Magazine: Examining xPerf。Context Switch
值很高時(shí),說(shuō)明內(nèi)核在CPU上對(duì)進(jìn)程或線程進(jìn)行切換。更多詳情,請(qǐng)參見(jiàn)The Case of the 2 Million Context Switches和Mark Russinovich's The Case of the System Process CPU Spikes。Context Switches/sec
值很高表示有大量的線程處于Ready狀態(tài),需要減少線程的數(shù)量解決問(wèn)題。