面对IIS 10(Windows Server 2016,.NET 4集成模式,经典ASP.NET应用程序)上的问题,似乎没有应用超过5000的maxConcurrentRequestsPerCPU
设置。但是,将其设置为较低的值具有清晰可见的效果。
我正在使用JMetter进行负载测试。如果我将线程数设置为5000,则我看到100%的成功率,但是无论我将maxConcurrentRequestsPerCPU
和requestQueueLimit
设置为多高,更高的失败率。例如,使用6000个线程进行测试始终会导致16.6%的故障率。
如果将maxConcurrentRequestsPerCPU
设置为12之类的低值,则故障率几乎达到99%,所以我知道下限设置会起作用,但不会超过5000。
VM分配了2个内核,因此使用5000 x 2个内核,我认为我应该能够成功使用10,000个线程进行测试。
<?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个以上的请求,则需要增加requestQueueLimit。 requestQueueLimit限制系统中的请求总数。由于其传统,它实际上是系统中的请求总数,而不是某个队列中的请求数。目的是防止服务器由于缺少物理内存,虚拟内存等而倒塌。达到限制后,传入的请求将收到快速的“ 503服务器太忙”响应。