You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为每日回收的IIS应用池自动创建DebugDiagnosticTool内存泄漏规则?

实现DebugDiagnostic Tool自动关联回收后的w3wp进程

完全可以实现应用池回收后自动创建并关联内存泄漏规则,以下是几种可行的方案:

方案一:利用DebugDiag命令行+IIS回收事件触发

  • DebugDiag自带命令行工具DebugDiag.exe,支持直接按进程名称创建内存泄漏规则,无需指定PID,新生成的w3wp进程会被自动纳入监控。核心命令如下:
    DebugDiag.exe /rule /add /type:Memory /processname:w3wp.exe /fullonsecondchance /logpath:"C:\DebugDiagLogs"
    
  • 结合Windows任务计划程序,监听IIS应用池回收完成的事件(事件ID为5074,来源为WAS),触发上述命令执行。这样每次应用池回收后,新w3wp进程生成时,规则会自动关联。

方案二:配置DebugDiag规则按进程名称+应用池筛选

  • 打开DebugDiag创建内存泄漏规则时,选择按Process Name关联w3wp.exe,而非指定固定PID。
  • 进入规则高级设置,添加进程筛选条件:通过w3wp进程的命令行参数匹配目标应用池名称(每个w3wp进程的命令行都会包含-ap "你的应用池名称"字段),这样就能精准监控目标应用池的所有w3wp进程,不管PID如何变化。

方案三:PowerShell脚本+任务计划定期检查

  • 编写PowerShell脚本,定位目标应用池对应的w3wp进程,若发现新进程则调用DebugDiag命令关联:
    $targetAppPool = "你的目标应用池名称"
    $targetProcess = Get-WmiObject Win32_Process | Where-Object { 
        $_.Name -eq "w3wp.exe" -and $_.CommandLine -match $targetAppPool 
    }
    if ($targetProcess) {
        & "C:\Program Files\DebugDiag\DebugDiag.exe" /rule /add /type:Memory /pid:$($targetProcess.ProcessId) /fullonsecondchance /logpath:"C:\DebugDiagLogs"
    }
    
  • 将脚本添加到任务计划,设置为应用池回收事件触发,或每隔5-10分钟执行一次,确保新进程生成后能被及时关联。

注意事项

  • 确保DebugDiag及执行脚本的账户拥有管理员权限,能正常访问w3wp进程。
  • 日志路径需设置到有写入权限的目录,避免因权限问题导致监控失效。
  • 多应用池场景下,务必通过命令行参数筛选目标应用池,避免误监控其他进程。

内容的提问来源于stack exchange,提问作者PsCraft

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 12:35:01