Назад | Перейти на главную страницу

IIS Число потоков рабочего процесса для приложения ASP.NET

TL; DR; Дайте рабочему процессу больше потоков!

Задний план

У нас есть приложение ASP.NET, которое предоставляет веб-API, где одна из «конечных точек / методов» выполняет набор запросов к внешней системе (SQL, AD и т. Д.) И занимает прибл. 4 секунды.

Вызовы ввода-вывода являются синхронными, поэтому поток запроса блокируется, пока все не будет завершено.

Приложение написано на i .NET 4.6.2 и работает на IIS 7.5.

Проблема

Мы испытываем очень резкую нагрузку со 100 запросами к конечной точке в течение короткого периода времени, что, по-видимому, приводит к «нехватке потоков», в результате чего запросы помещаются в очередь. Это приводит к неприемлемому времени отклика для остальной части приложения.

ЦП и память на сервере в порядке во время периода всплеска нагрузки. SQL в порядке, и AD тоже в порядке (то есть они без проблем отвечают на другие запросы из других приложений)

Возможное решение

Моя цель состояла в том, чтобы дать рабочему процессу больше потоков, но я не мог найти правильную конфигурацию.

Я попробовал рекомендации из следующей статьи: https://support.microsoft.com/en-us/help/821268/contention-poor-performance-and-deadlocks-when-you-make-calls-to-web-s

С полученным файлом machine.config:

<processModel autoConfig="false" maxWorkerThreads="200" maxIoThreads="200" minWorkerThreads="100"/>
<httpRuntime minFreeThreads="704" minLocalRequestFreeThreads="608"/>

но похоже, что это дает небольшой результат или его отсутствие по сравнению с использованием значений по умолчанию.

Я что-то упускаю?