首先,这里有一份关于IIS7 HTTP请求生命周期以及各种影响性能的设置的优秀概述:
ASP.NET Thread Usage on IIS 7.0 and 6.0
具体来说,在dotNet 4中,默认值maxConcurrentRequestsPerCPU和requestsQueueLimit都设置为5000。例如:(在aspnet.config中):
<system.web>
<applicationPool
maxConcurrentRequestsPerCPU="5000"
maxConcurrentThreadsPerCPU="0"
requestQueueLimit="5000" /> (** see note below)
</system.web>
在我看来,在多CPU/核服务器上,请求队列限制(requestQueueLimit)将始终在'perCPU'限制之前被调用。因此,如果实际上您想要每个CPU的最大请求数为5000,则我期望需要将requestQueueLimit增加到5000 * CPUCount或完全禁用它。
我的理解正确吗?如果是这样,我可以禁用requestQueueLimit吗?(将其设置为零?)。关于此设置的文档似乎没有解决这个问题(所以也许我错过了什么或者误读了?)
**以上文章中的旁注:requestQueueLimit命名不当。它实际上限制了ASP.NET能够并发服务的最大请求数。这包括排队的请求和正在执行的请求。如果“当前请求”性能计数器超过requestQueueLimit,则新的进入请求将被拒绝,并返回503状态码。