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

时间:2013-01-29 08:10:46

标签: pid w3wp procdump

我正在尝试解决我们的一个网站问题导致CPU间歇性地出现问题。该站点位于Web服务器场中,并且在不同时间间歇性地跨所有服务器发生。导致峰值的过程是w3wp.exe。我已经检查了所有显而易见的事情,现在想要为w3wp.exe分析多组转储文件,这会导致峰值。

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

我可以使用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。每次回收App Pool时,PID都会更改。这会导致PID在我可以捕获多个转储文件之前更改。然后我需要在每个Web服务器上再次启动procdump。

我的问题:

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

1 个答案:

答案 0 :(得分:1)

来自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