【问题标题】:Dump File analysis转储文件分析
【发布时间】:2017-02-20 13:41:27
【问题描述】:

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

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

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

【问题讨论】:

  • “是文件大小吗” - 可能不是。所有受支持的 Windows 版本都允许读取大于 4 GB 的文件。 “我没有正确处理转储” - 我们不知道您是如何生成转储文件的,所以我们无法知道。
  • 这是 32 位应用程序吗,如果是则需要使用 32 位任务管理器进行转储查看:blogs.msdn.microsoft.com/amb/2011/05/12/…
  • 它是 64 位应用程序。转储来自任务管理器。只是为了测试,我在我的测试环境中遵循了相同的过程,并进行了 800 MB 的转储,这可以正常打开。
  • 您是否尝试过 WPR/WPA 来分析 CPU 使用率?您是否能够检测出导致 CPU 使用率的原因?
  • @ThomasWeller,这不是重复的问题。因为以相同的方式在同一台机器上进行相同进程的转储,但很少有转储打开,很少有没有打开。

标签: windows iis windbg crash-dumps debugdiag


【解决方案1】:

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

安装 Windows 性能工具包,它是 Windows 10 SDK 的一部分(V1607 works on Win8/8.1(Server2012/R2) 和 Win10 或 V1511 SDK,如果您使用 Windows 7/Server2008R2),运行 WPRUi.exe并选择CPU Usage

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

load the Debug Symbols。现在在图中选择您的进程,放大并展开堆栈,这里您可以看到所有调用的 CPU 使用权重

在此示例中,Internet Explorer 的大部分 CPU 使用来自 HTML 内容。

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

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

【讨论】:

  • 良好的反应。我只是想补充一点,如果你有一个无限循环,有时你可以通过运行!runaway 来解决问题。但是,我不同意您在此处所说的任何内容。
  • 感谢@SteveJohnson,但在这里我试图打开一个 dmp 文件,而不是想出另一种方法来获取服务器快照。
  • 你又遇到了 XY 问题 (meta.stackexchange.com/a/66378)。使用我的技术来解决问题,而不是使用错误的工具 windbg
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-11-25
  • 2011-07-04
  • 1970-01-01
  • 2011-03-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多