问题描述
在使用Cloud Service服务时,发现服务的CPU占用很高,在业务请求并不大的情况下,需要直到到底是什么进程占用了大量的CPU资源,已经如何获取IIS进程(w3wp.exe)的DUMP文件?
问题解答
一:收集云服务中CPU的性能数据
远程登录(RDP)到云服务的实例上,使用管理员身份运行以下命令:
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分钟收集一次系统性能日志,满500MB会自动覆盖之前的日志。
- 请根据各磁盘空间大小来判断将该日志存储到哪个分区,默认为C:\PerfMonLogs文件夹。
- 期间不要重启机器,如果重启了机器,请重新收集.
- 可以使用使用指令停止Performance Monitor:Logman stop Perf-1Minute
二:收集IIS进程Dump文件
1:抓取w3wp的进程dump,下载抓取工具:ProcDump - Sysinternals | Microsoft Learn
执行 procdump 命令
procdump -accepteula -ma -n 5 -s 5 w3wp.exe
这个指令会间隔5秒,连续抓取五次 (Dump文件的大小取决于应用对Memory的占用,可能高达几个GB的大小)