我正在尝试解决我们其中一个网站的问题,该问题导致 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