即使 PID 更改,也会在达到 CPU 阈值时自动生成 w3wp.exe 进程转储文件



我正在尝试解决我们其中一个网站的问题,该问题导致 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 峰值 80% 持续 10 秒,并且至少需要完全转储两次迭代。

问题:

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

我的问题:

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

来自Microsfot的USe 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

最新更新