IIS 7.5 中应用程序池的 CPU 限制

Kyl*_*ndt 8 windows iis application-pools iis-7.5

我看到在 iis 7.5 中,我可以为应用程序池在指定的时间内设置CPU % 利用率限制。如果违反此限制,我也可以让它终止工作进程。如果告诉它这样做,工作进程会在它被杀死后自动重新启动,还是需要手动干预?

在 Stack Overflow上提到可以在间隔完成时重新启动......

Eva*_*son 4

这看起来像是模拟(或源代码访问...>sigh<)可能是以任何程度的置信度查看行为的唯一方法的情况之一。

CPU配额回收的事件日志条目的文档对回收进行了如下讨论:

默认情况下,应用程序池回收是重叠的,这意味着要关闭的工作进程将继续运行,直到启动新的工作进程。新的工作进程启动后,新的请求将传递给它。旧工作进程在处理完现有请求后或在配置的超时后(以先到者为准)将关闭。这种回收方式确保为客户提供不间断的服务。但是,如果应用程序池中的某个应用程序无法同时运行多个自身实例,则可以禁用重叠轮换。

在我看来,根据定义,由于 CPU 消耗过多而终止工作进程意味着不允许完成挂起的请求(因为它们耗尽了 CPU 配额)。

谈谈您最关心的问题:我没有看到任何让我相信新的工作进程不会自动启动的事情。Stack Overflow 链接中的声明确实让我怀疑 IIS 使用的算法实际上是否可能将回收与用于测量 CPU 配额耗尽的计时器的分辨率联系起来。据我所知,确定这一点的最佳方法是编写一个浪费 CPU 的服务器端组件,将其部署到测试环境中,然后查看其回收行为如何发挥作用。一个简单的组件在一个紧密的循环中持续几秒钟,然后返回一个已知的字符串,与运行测试工具的客户端(例如并行“wget”进程池)相结合可能就足够了。用来自客户端的一堆并行请求进行锤击,并报告请求如何收到正确的响应与错误消息等。(这让我觉得不得不诉诸这样的事情而不是仅仅看看是很愚蠢的在源代码中...)