【问题标题】:Kill W3WP when CPU spikes through IIS advanced CPU settings当 CPU 通过 IIS 高级 CPU 设置达到峰值时终止 W3WP
【发布时间】:2021-04-10 21:49:14
【问题描述】:

我们在生产环境中有一个问题网站,导致 CPU 出现间歇性峰值。 目前很难找到。在找到根本原因之前,我们想使用 IIS CPU 提前设置来回收网站 iis 池。

为了测试这一点,我在开发环境中创建了一个带有一个端点的简单 Web api。这个端点什么都不做,只是模拟完成这项工作的 CPU 峰值。

现在我已将 CPU 设置配置为

Limit: 70 => IIS8 所以是%,值必须在0~100之间

限制行动:KillW3wp

限制间隔:1

我已经重新启动了 iis 池和网站,然后我调用了我在上面创建的端点。 我可以看到 CPU 一直在 90% 以上。

问题;

  1. 上面的假网站叫做“KillCPU”,当我调用KillCPU端点时,不应该创建IIS Worker Process来处理请求吗?但是我查看了任务管理器,它显示了 KillCPU.exe(按计划消耗 CPU)

  2. 当 CPU 使用率超过 70% 时,为什么 KillCPU.exe 没有被杀死?不仅进程仍然出现在任务管理中,而且当我查看事件查看器时,我也看不到任何事件日志。

有人可以帮忙吗?

问候

【问题讨论】:

  • KillCPU.exe 和 w3wp.exe 不是同一个进程。此配置仅定义应用程序池的 CPU 使用限制,而不是整个 CPU 使用。因此,如果您的 CPU 使用率超过 70%,但工作进程仅使用 20% cpu,则不会触发该操作。将百分比设置为较低的值,然后重试。
  • 谢谢布鲁斯。我降低到 50% 并且 KillCPU.exe 本身使用了超过 50% 一段时间,但我仍然在任务管理器中看到 killcpu.exe。仍然没有事件日志。我打开几个浏览器同时调用killcpu端点,你觉得这和这个有关系吗?
  • 顺便说一下,我尝试了 Throttling 选项,这行得通!想知道为什么 KillW3WP 选项不起作用:(

标签: c# .net server crash iis-8


【解决方案1】:

经过我的测试,原来进程会被杀死,但是任务管理器会有延迟。

killCPU.exe和w3wp.exe不是同一个进程,需要区分。 IIS杀死w3wp.exe,你创建的应用killCPU.exe不会被杀死。

我将limit设置为最小值1,应用CPU占用率为12%。在资源监视器中,w3wp.exe 仍在运行,但应用程序返回了 503 错误,并且 IIS 中的应用程序池已停止。如果从IIS的工作进程中查看进程信息,会显示w3wp.exe仍然存在,但状态为停止。

您可以将限制设置为 1 并再次测试。如果仍然无法杀死 w3wp.exe,则可能是 IIS 有问题。请重新安装。

【讨论】:

  • 非常感谢您抽出宝贵时间为我们进行测试。伟大的!!!也祝你过个好年!!! :)
  • 希望你也有一个美好的一年。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-28
  • 1970-01-01
相关资源
最近更新 更多