6

最近我开始在少数服务器上遇到问题,其中 CPU 开始消耗比通常趋势更多的资源。我试图找出根本原因,并从任务管理器中获取 w3wp 进程的转储(右键单击进程并进行转储)。

现在 dmp 文件大小为 14GB,我正在尝试通过 WinDBG 对其进行分析,但该工具无法正常工作并收到消息:
错误屏幕截图

我还使用了一些小型转储,但其中一些打开正常,而很少打开,因此与 32 位或 64 位之间的混淆无关。(收集的转储是 64 位)。我想知道是什么导致了这个问题。是文件大小还是我没有正确进行转储。
我检查了链接,但它没有帮助。

4

1 回答 1

11

Windbg 不是这项工作的正确工具。转储只是快照,因此您不知道之前发生了什么。使用 ETW 和此处的 CPU 采样,它汇总所有调用并详细显示 CPU 使用情况。

安装作为 Windows 10 SDK 一部分的 Windows Performance Toolkit(V1607 适用于 Win8/8.1(Server2012/R2) 和 Win10 或V1511 SDK,如果您使用 Windows 7/Server2008R2),运行WPRUi.exe并选择CPU Usage

在此处输入图像描述

并按下Start。捕获 1-2 分钟的高 CPU 使用率,然后单击Save使用 WPA.exe (Perf Analyzer) 打开生成的 ETL,将图形拖放CPU Usage (Sampled)到 analysys 窗格中

在此处输入图像描述

加载调试符号。现在在图中选择您的进程,放大并展开堆栈,在这里您可以看到所有调用的 CPU 使用权重

在此示例中,Internet Explorer 的大多数 CPU 使用率来自 HTML 内容。

对于 .NET 应用程序,WPA 向您显示 .net 相关的分组,例如 GC 或 JIT:

在此处输入图像描述

展开 w3wp 进程的堆栈以查看它在做什么。从名字你应该知道会发生什么。

于 2017-02-20T16:00:43.100 回答