5

我正在尝试解决我们的一个网站导致 CPU 间歇性飙升的问题。该站点位于 Web 服务器场上,并且在不同时间在所有服务器上间歇性地发生。导致峰值的进程是 w3wp.exe。我已经检查了所有明显的东西,现在想分析导致峰值的 w3wp.exe 的多组转储文件。

我试图在 w3wp.exe 进程在指定时间内达到指定的 CPU 阈值时自动生成转储文件。

我可以使用 ProcDump.exe 来执行此操作,如果它在 PID(进程 ID)更改之前被触发,它会起作用。

例如:( procdump -ma -c 80 -s 10 -n 2 5844其中 5844 是 PID)

  • -ma 写一个包含所有进程内存的转储文件。默认转储格式包括线程和句柄信息。
  • -c 创建进程转储的 CPU 阈值。
  • -s 在写入转储之前必须达到连续秒 CPU 阈值(默认为 10)。
  • -n 退出前要写入的转储数。

上面的命令将监控 w3wp.exe,直到 CPU 在 10 秒内达到 80% 的峰值,并且至少需要两次迭代才能完全转储。

问题:

我有多个 w3wp.exe 实例正在运行,所以我不能使用进程名称,我需要指定 PID。每次回收应用程序池时,PID 都会更改。这会导致 PID 在我捕获多个转储文件之前发生变化。然后我需要在每个 Web 服务器上再次启动 procdump。

我的问题:

即使在 PID 更改后,如何继续自动生成转储文件?

4

1 回答 1

1

使用 Microsfot 的 DebugDiagnostic 2.0:https ://www.microsoft.com/en-us/download/details.aspx?id=49924

它处理多个 w3wp.exe 进程。如果您需要通用解决方案,则必须编写脚本 - 例如https://gallery.technet.microsoft.com/scriptcenter/Getting-SysInternals-027bef71

于 2017-08-10T15:51:29.423 回答