首先,这里对 IIS7 HTTP 请求生命周期和影响性能的各种设置进行了很好的概述:
IIS 7.0 和 6.0 上的 ASP.NET 线程使用情况
非常特别的是,在 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 可以同时处理的最大请求数。这包括排队的请求和正在执行的请求。如果“Requests Current”性能计数器超过 requestQueueLimit,新的传入请求将被拒绝并返回 503 状态代码)