我有以下IIS设置
Server
|
|-Application Pools
|-Sites
|
|-Website1
|
|-Application1
|-Application2Website1使用AppPool运行WebsiteAppPool Application1使用应用程序池运行Application1AppPool Application2使用应用程序池Application2AppPool运行
WebsiteAppPool的CPU限制为50% (即50000),limitaction ThrottleUnderLoad Application1AppPool的CPU限制为80% (即80000),limitaction ThrottleUnderLoad Application2AppPool的CPU限制为50% (即50000),limitaction ThrottleUnderLoad
我在Application1上执行负载测试,而其他应用程序处于空闲状态。

红线是Application1AppPool的CPU消耗,蓝线是机器处理器总时间的CPU消耗。
当Application1AppPool处于高CPU使用率时,应用程序开始出现错误,响应时间是不可接受的范围。
现在我的问题是,即使给了Application1AppPool 80%的CPU限制,为什么它达到了100% (红线)(在屏幕上显示接近90%,但实际上当我们看到较少的时间间隔图时,它开始达到100% ),而我的机器的CPU几乎没有被使用(蓝线)。我预计总的处理器处理时间大约是80%。
ThrottleUnderLoad意味着,如果没有CPU争用,即没有其他进程需要CPU,那么它可以消耗超过80%的CPU。因此,从理论上讲,Application1AppPool被允许使用更多的可用CPU,但这并没有发生。
你知道我错过了什么吗?
发布于 2021-02-04 14:59:33
负载下节流-仅当其他应用程序需要CPU时,应用程序池工作进程才会在指定的限制下节流。如果CPU空闲,应用程序池可能会消耗更多CPU活动,从而超过为其设置的限制。
这意味着如果需要,它可以使用CPU。
如果您想在某个限制后停止CPU消耗,您可以使用“杀死工作进程”操作。它将关闭超出其CPU限制的应用程序池工作进程。
有关更多信息,请参阅下面的文章:
https://docs.microsoft.com/en-us/iis/configuration/system.applicationhost/applicationpools/add/cpu
https://stackoverflow.com/questions/66034471
复制相似问题