【发布时间】:2021-04-10 21:49:14
【问题描述】:
我们在生产环境中有一个问题网站,导致 CPU 出现间歇性峰值。 目前很难找到。在找到根本原因之前,我们想使用 IIS CPU 提前设置来回收网站 iis 池。
为了测试这一点,我在开发环境中创建了一个带有一个端点的简单 Web api。这个端点什么都不做,只是模拟完成这项工作的 CPU 峰值。
现在我已将 CPU 设置配置为
Limit: 70 => IIS8 所以是%,值必须在0~100之间
限制行动:KillW3wp
限制间隔:1
我已经重新启动了 iis 池和网站,然后我调用了我在上面创建的端点。 我可以看到 CPU 一直在 90% 以上。
问题;
-
上面的假网站叫做“KillCPU”,当我调用KillCPU端点时,不应该创建IIS Worker Process来处理请求吗?但是我查看了任务管理器,它显示了 KillCPU.exe(按计划消耗 CPU)
-
当 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