問題描述
在使用Cloud Service服務(wù)時,發(fā)現(xiàn)服務(wù)的CPU占用很高,在業(yè)務(wù)請求并不大的情況下,需要直到到底是什么進(jìn)程占用了大量的CPU資源,已經(jīng)如何獲取IIS進(jìn)程(w3wp.exe)的DUMP文件?
問題解答
一:收集云服務(wù)中CPU的性能數(shù)據(jù)
遠(yuǎn)程登錄(RDP)到云服務(wù)的實(shí)例上,使用管理員身份運(yùn)行以下命令:
Logman.exe create counter Perf-1Minute
-f bincirc
-max 500
-c "\LogicalDisk()*" "\Memory*" "\Network Interface()*" "\Paging File()*" "\PhysicalDisk()*" "\Server*" "\System*" "\Process()*" "\Processor()*" "\Cache*"
-si 00:01:00
-o C:\PerfMonLogs\Perf-1Minute.blgLogman start Perf-1Minute
- 該命令會每隔1分鐘收集一次系統(tǒng)性能日志,滿500MB會自動覆蓋之前的日志。
- 請根據(jù)各磁盤空間大小來判斷將該日志存儲到哪個分區(qū),默認(rèn)為C:\PerfMonLogs文件夾。
- 期間不要重啟機(jī)器,如果重啟了機(jī)器,請重新收集.
- 可以使用使用指令停止Performance Monitor:Logman stop Perf-1Minute
收集完成,打開 C:\PerfMonLogs\Perf-1Minute.blg文件,可查看每一個進(jìn)程對CPU資源的占用情況,如下圖:

二:收集IIS進(jìn)程Dump文件
1:抓取w3wp的進(jìn)程dump,下載抓取工具:ProcDump - Sysinternals | Microsoft Learn
執(zhí)行 procdump 命令
procdump -accepteula -ma -n 5 -s 5 w3wp.exe
這個指令會間隔5秒,連續(xù)抓取五次 (Dump文件的大小取決于應(yīng)用對Memory的占用,可能高達(dá)幾個GB的大小)
Use the
-accepteulacommand line option to automatically accept the Sysinternals license agreement.-ma :Write a 'Full' dump file.Includes all memory (Image, Mapped and Private). Includes all metadata (Process, Thread, Module, Handle, Address Space, etc.).
-n :Number of dumps to write before exiting.
-s :Consecutive seconds before dump is written (default is 10).
參考資料
ProcDump : https://learn.microsoft.com/en-us/sysinternals/downloads/procdump#using-procdump
logman : https://learn.microsoft.com/zh-cn/windows-server/administration/windows-commands/logman
當(dāng)在復(fù)雜的環(huán)境中面臨問題,格物之道需:濁而靜之徐清,安以動之徐生。 云中,恰是如此!