我正在尝试解决我们的一个网站导致 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 更改后,如何继续自动生成转储文件?