Во-первых, здесь представлен большой обзор жизненного цикла HTTP-запроса IIS7 и различных настроек, влияющих на производительность:
Использование потоков ASP.NET в IIS 7.0 и 6.0
В частности, в dotNet 4 значения по умолчанию для maxConcurrentRequestsPerCPU и RequestQueueLimit установлены на 5000. Например. эквивалентно: (в aspnet.config):
<system.web>
<applicationPool
maxConcurrentRequestsPerCPU="5000"
maxConcurrentThreadsPerCPU="0"
requestQueueLimit="5000" /> (** see note below)
</system.web>
Мне кажется, что на многопроцессорном / базовом сервере запрос requestQueueLimit здесь всегда будет вызываться задолго до ограничения perCPU. Таким образом, если вы на самом деле хотите получить до 5000 запросов на процессор, я бы ожидал, что requestQueueLimit нужно увеличить до 5000 * CPUCount или просто отключить.
Верна ли моя интерпретация? Если это так, я могу отключить requestQueueLimit? (установить его на ноль?). Документация по этому параметру, по-видимому, не относится к этому вопросу (может, я что-то упустил или неправильно прочитал?)
** примечание из вышеприведенной статьи: requestQueueLimit имеет неправильное имя. Фактически он ограничивает максимальное количество запросов, которые могут быть одновременно обработаны ASP.NET. Это включает как запросы, которые находятся в очереди, так и запросы, которые выполняются. Если счетчик производительности «Текущее количество запросов» превышает requestQueueLimit, новые входящие запросы будут отклонены с кодом состояния 503)