IIS 10-超过5000的maxConcurrentRequestsPerCPU设置被忽略

问题描述 投票:0回答:1

面对IIS 10(Windows Server 2016,.NET 4集成模式,经典ASP.NET应用程序)上的问题,似乎没有应用超过5000的maxConcurrentRequestsPerCPU设置。但是,将其设置为较低的值具有清晰可见的效果。

我正在使用JMetter进行负载测试。如果我将线程数设置为5000,则我看到100%的成功率,但是无论我将maxConcurrentRequestsPerCPUrequestQueueLimit设置为多高,更高的失败率。例如,使用6000个线程进行测试始终会导致16.6%的故障率。

如果将maxConcurrentRequestsPerCPU设置为12之类的低值,则故障率几乎达到99%,所以我知道下限设置会起作用,但不会超过5000。

VM分配了2个内核,因此使用5000 x 2个内核,我认为我应该能够成功使用10,000个线程进行测试。

Aspnet.config

<?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。

此时将提供任何帮助/建议。谢谢。

performance iis load-testing iis-10
1个回答
0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.