IIS7综合管线:maxConcurrentRequestsPerCPU和requestsQueueLimit设置之间的交互 [英] IIS7 Integrated Pipeline: Interaction between maxConcurrentRequestsPerCPU and requestsQueueLimit settings

查看:981
本文介绍了IIS7综合管线:maxConcurrentRequestsPerCPU和requestsQueueLimit设置之间的交互的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

首先有,这里影响性能IIS7的HTTP请求生命周期和各种设置的一个很好的概述:

Firstly there's a great overview of the IIS7 HTTP request lifecycle and various settings that affect performance here:

<一个href=\"http://blogs.msdn.com/b/tmarq/archive/2007/07/21/asp-net-thread-usage-on-iis-7-0-and-6-0.aspx\">ASP.NET在IIS 7.0和6.0 线程使用

非常特别,虽然,在dotNet的4默认​​值 maxConcurrentRequestsPerCPU requestsQueueLimit 设置为5000。例如等同于:(在aspnet.config):

Very specifically though, in dotNet 4 the defaults for maxConcurrentRequestsPerCPU and requestsQueueLimit are set to 5000. E.g. equivalent to: (in aspnet.config):

<system.web>
   <applicationPool 
      maxConcurrentRequestsPerCPU="5000" 
      maxConcurrentThreadsPerCPU="0" 
      requestQueueLimit="5000" /> (** see note below)
</system.web>

在我看来,一个多CPU /核服务器这里的requestQueueLimit将始终berfore了perCPU限制以及上调用。因此,如果每个CPU 5000请求的最大值是你真正想要的话,我会想到的是,requestQueueLimit需要增加,以5000 * CPUCount或只是完全禁用。

Seems to me that on a multi-CPU/core server the requestQueueLimit here will always be invoked well berfore the 'perCPU' limit. Thus, if a max of 5000 requests per CPU is what you actually want then I would expect that the requestQueueLimit needs to be increased to 5000 * CPUCount or just disabled altogether.

我是跨pretation是否正确?如果是这样我可以禁用requestQueueLimit? (设置为零?)。此设置的文档不会出现为解决这个问题(也许我失去了一些东西还是误读?)

Is my interpretation correct? If so can I disable requestQueueLimit? (set it to zero?). The documentation on this setting doesn't appear to address this question (so maybe I'm missing something or misreading?)

**从上述文章中端注:requestQueueLimit名为甚少。它实际上限制了可以由ASP.NET同时提供服务请求的最大数量。这包括执行该排队请求和请求。如果当前请求性能计数器超过requestQueueLimit,新传入的请求会以503状态code被拒绝)

** side note from the above article: The requestQueueLimit is poorly named. It actually limits the maximum number of requests that can be serviced by ASP.NET concurrently. This includes both requests that are queued and requests that are executing. If the "Requests Current" performance counter exceeds requestQueueLimit, new incoming requests will be rejected with a 503 status code)

推荐答案

***是我的间pretation是否正确?

***Is my interpretation correct?

是的,如果你想同时执行超过5000个请求,你需要增加requestQueueLimit。的requestQueueLimit限制在系统的请求的总数。由于它的遗留,它实际上是在系统中的请求的总数,而不是在一些队列中的请求的数目。它的目标是prevent翻倒由于缺乏物理内存,虚拟内存等。当达到限制,传入的请求会得到迅速503服务器太忙的回应服务器。顺便说一句,在系统请求的当前数量由暴露的ASP.NET \\请求当前性能计数器。

Yes, if you want to execute more than 5000 requests concurrently, you'll need to increase the requestQueueLimit. The requestQueueLimit restricts the total number of requests in the system. Due to its legacy, it is actually the total number of requests in the system, and not the number of requests in some queue. It's goal is to prevent the server from toppling over due to lack of physical memory, virtual memory, etc. When the limit is reached, incoming requests will receive a quick 503 "Server Too Busy" response. By the way, the current number of requests in the system is exposed by the "ASP.NET\Requests Current" performance counter.

***我可以禁用requestQueueLimit? (设置为零?)

***can I disable requestQueueLimit? (set it to zero?)

您可以有效地将其设置为一个较大的值,如50000,您必​​须设置aspnet.config fileI值禁用它怀疑你的服务器可以处理50000个并发请求,但如果是这样,那么两倍。它设置为零不会禁用它......奇怪的是,这意味着不超过一个请求可以并发执行。

You can effectively disable it by setting it to a large value, like 50000. You must set the value in the aspnet.config fileI doubt your server can handle 50000 concurrent requests, but if so, then double that. Setting it to zero will not disable it...oddly, it means no more than one request can execute concurrently.

顺便说一句,它看起来像有在V4的错误。为集成模式,只成功读取requestQueueLimit的值,如果它在aspnet.config文件那样构成MSDN上的。出于某种原因,V4不是从machine.config中读它时,我用它一点点实验前

By the way, it looks like there is a bug in v4. For integrated mode, it only successfully reads the value of requestQueueLimit if it is configured in the aspnet.config file as described on MSDN. For some reason, v4 was not reading it from machine.config when I experimented with it a little bit ago.

这篇关于IIS7综合管线:maxConcurrentRequestsPerCPU和requestsQueueLimit设置之间的交互的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆