最近,我开始在一些服务器上遇到问题,CPU开始消耗比平时更多的资源。我试图找出这一问题的根本原因,并从任务管理器中获取w3wp进程的转储(右键单击进程并获取转储)。
现在dmp文件大小为14 to,我正在尝试通过WinDBG对其进行分析,但该工具无法工作并收到消息:

我也取了一些小转储文件,但其中一些打开得很好,而少数则不是,所以这与32位或64位之间的混淆无关。(收集的转储是64位的)。我想知道是什么导致了这个问题。是文件大小还是我没有正确获取转储。
我查看了link,但它没有任何帮助。
发布于 2017-02-21 00:00:43
Windbg不是适合这项工作的工具。转储只是快照,所以您不知道之前发生了什么。使用ETW,这里使用CPU采样,它对所有调用求和,并详细显示CPU使用情况。
安装Windows性能工具包,它是Windows10SDK的一部分(在Win8/8.1(Server2012/R2)和Win10上安装V1607 works,如果使用Windows7/Server2008R2,则安装V1511 SDK ),运行WPRUi.exe并选择CPU Usage

然后按下Start。捕获1-2分钟的高CPU使用率,然后单击Save。Open the generated ETL with WPA.exe (Perf analyzer),将CPU Usage (Sampled)图表拖放到analysys窗格中

和load the Debug Symbols。现在在图表中选择您的进程,放大并展开堆栈,在这里您可以看到所有调用的CPU使用率的权重
在此示例中,来自Internet Explorer的大部分CPU使用量来自HTML内容。
对于.NET应用程序,WPA向您显示与.net相关的分组,如GC或JIT:

展开w3wp进程的堆栈,看看它在做什么。从名字中你应该知道发生了什么。
https://stackoverflow.com/questions/42346126
复制相似问题