我编写了一个基于 Windows 的 Web 服务器服务,该服务使用 Sql Server Express 作为后端数据库。每隔几天,CPU 就会飙升至 100%。检查我的 Web 服务器日志发现我的服务在查询 Sql Server 数据库时遇到了问题。当我检查任务管理器时,我的服务和 Sql Server 都占用了大部分 CPU。我不确定问题出在我的服务还是 Sql Server 上。
我希望使用 PerfMon 或其他实用程序来记录进程的 CPU 使用情况(或专门过滤我的服务和 Sql Server)。这样,当我的服务器进入此状态时,我可以返回,检查这些日志,并确定最初导致 CPU 峰值的是我的服务还是 Sql Server。
这可能吗?
本文表示 PerfMon 不能用于跟踪特定服务的指标。
答案1
要分析现代 Windows 系统(NT6.x - Vista 或更新版本)上的 CPU 使用率,您可以使用Windows 性能工具包。
安装 WPT,它是Windows 10 SDK(如果您在 Win7/8 上捕获跟踪,请确保使用 SDK 的 TH2 版本,7 月份的 TH1 版本已损坏)。
“C:\Program Files (x86)\Windows Kits\10\Windows Performance Toolkit\wpr.exe”-start CPU -start DotNET && 超时 -1 &&“C:\Program Files (x86)\Windows Kits\10\Windows Performance Toolkit\wpr.exe”-stop Result.etl
现在打开result.etl
Windows Performance Analyzer (WPA.exe) 并分析 CPU 使用率
这里的 CPU 使用率来自于简单的启动反射器。