我的应用程序间歇性地出现问题。它总是处于相对较高的负载下(每秒 10-50 次请求)。大多数时候它运行良好,CPU 使用率 < 10%。偶尔(大约每周一次)它会在大约 3 分钟内突然升至 100% CPU,然后一直保持这种状态,导致服务器无响应,直到我关闭 w3wp.exe。我正在继续尝试调试此问题。同时我需要一个临时解决方案。
是否有一种服务或工具可以用来监视 w3wp.exe,并在一段时间内其利用率超过 80% 时自动终止该进程?
答案1
IIS 可以自行处理这个问题;您可以将应用程序池配置为在其 CPU 使用率在给定的时间段内保持在某个阈值以上时回收(即重新启动)。
答案2
我不知道您的环境中是否有其他机器,但我建议进行一些监控。Nagios 或 Zabbix 或类似的应用程序。它们可以监控 CPU/磁盘空间/内存使用情况等...如果您的 CPU 使用率在您认为太长的时间内保持在 80% 或 90% 以上,那么您可以让该监控系统启动一项作业(zabbix 能够做到这一点,调用外部项目)以终止该池。但是,使用此解决方案需要一点学习曲线,您需要学习应用程序并编写脚本来重新启动应用程序池...类似于 .net 应用程序或使用 IIS 应用程序确定负责的应用程序池的 vb 脚本,然后使用命令行终止该进程。