IIS 10 -已忽略超过5000的每CPU最大并发请求数设置

bkhjykvo  于 2022-11-12  发布在  其他
关注(0)|答案(3)|浏览(351)

在IIS 10(Windows Server 2016,.NET 4集成模式,经典ASP.NET应用程序)上遇到一个问题,其中maxConcurrentRequestsPerCPU设置超过5000似乎不适用。但是,将其设置为较低的值具有清晰可见的效果。
我正在使用JMetter进行负载测试。如果我将线程数设置为5000,我会看到100%的成功率,但任何更高的值都有失败率,无论我将maxConcurrentRequestsPerCPUrequestQueueLimit设置得多高。例如,使用6000个线程进行测试时,失败率始终为16.6%。
如果我将maxConcurrentRequestsPerCPU设置为12这样的低值,我会得到几乎99%的失败率,所以我知道下限设置是有效的,只是不会超过5000。
该虚拟机分配了2个内核,因此我认为使用5000 x 2个内核应该能够成功测试10,000个线程。

Aspnet.配置文件

<?xml version="1.0" encoding="UTF-8" ?>
<configuration>
    <system.web> 
        <applicationPool 
           maxConcurrentRequestsPerCPU="50000" 
           maxConcurrentThreadsPerCPU="0" 
           requestQueueLimit="50000"/> 
    </system.web>

    <runtime>
        <legacyUnhandledExceptionPolicy enabled="false" />
        <legacyImpersonationPolicy enabled="true"/>
        <alwaysFlowImpersonationPolicy enabled="false"/>
        <SymbolReadingPolicy enabled="1" />
        <shadowCopyVerifyByTimestamp enabled="true"/>
    </runtime>
    <startup useLegacyV2RuntimeActivationPolicy="true" />
</configuration>

什么会覆盖这些设置并强制执行上限5000?

我觉得有一些额外的设置,需要设置为超过5000。
在这一点上,任何帮助/建议都将不胜感激。谢谢。

lrl1mhuk

lrl1mhuk1#

我遇到了类似的问题,经过一些挖掘,我相信你正在寻找的设置是在网站配置,称为appConcurrentRequestLimit。我能够测试较低的限制工作的预期,但我没有一个很好的方法来测试超过5000个连接的时刻。我会更新这篇文章,如果/当我击中〉5000个连接在未来。

**更新:**可以确认此设置确实有效。

要更改此值:
1.单击IIS管理器左窗格中的站点。
1.双击右窗格中的“配置编辑器”。
1.从“节”下拉列表中选择“system.webServer/serverRuntime”。
1.设置appConcurrentRequestLimit值(默认值为5000)。
1.单击“操作”窗格中的“应用”。
1.重新启动站点。

dly7yett

dly7yett2#

如果要并发执行5000个以上的请求,则需要增加requestQueueLimit。requestQueueLimit限制系统中的请求总数。由于它的继承性,它实际上是系统中的请求总数,而不是某个队列中的请求数。它的目标是防止服务器由于缺少物理内存、虚拟内存等。当达到该限制时,传入的请求将收到快速的503“服务器忙碌”响应。

hyrbngr7

hyrbngr73#

请尝试将appConcurrentRequestLimit设置为超过5000

相关问题