Короткий ответ - НЕТ, но он поддерживает другие одновременные соединения, не дожидаясь завершения медленного соединения.

За последние несколько дней я заметил, что наши API работают медленно, а время отклика увеличилось, хотя в архитектуре / фреймворке не было изменений. Все серверы работали в стабильном режиме (без тревог). После нескольких исследований я нашел решение ниже, и оно сработало. Прежде чем я объясню решение, давайте посмотрим на блок-схему API.

Как вы можете видеть, балансировщик нагрузки отправляет запросы на веб-серверы и веб-серверы, выполняя вызовы данных на распределенные серверы данных. На изображении ниже показан один рабочий процесс, который обрабатывает все запросы от серверов данных. Если все серверы данных включены и быстро возвращают данные, значит, один рабочий процесс работает нормально.

Но что, если один сервер данных отвечает медленно и имеет некоторые проблемы. В одном рабочем процессе из-за длительных запросов к базе данных и длительных синхронных транзакций он будет удерживать другие вызовы API для завершения (не имеет значения, быстро ли отвечают остальные серверы данных). Из-за проблем с одним сервером данных другие API-интерфейсы откликаются медленно в случае одного рабочего процесса.

Чтобы медленные серверы данных не влияли на другие вызовы API, мы можем создать больше рабочих процессов, чтобы, если один рабочий процесс простаивает / требует много времени для выполнения, другой рабочий процесс может обрабатывать нагрузку и обслуживать данные через вызовы API.

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

Это поможет вам, если вам нравится -

  • Приложения, которые делают длительные запросы к базе данных
  • Приложения, потоки которых заняты длительными синхронными процессами
  • Например, если приложение вызывает внутреннюю базу данных и ответ медленный, тогда веб-сад поддерживает другие одновременные подключения, не дожидаясь завершения медленного подключения.

Как увеличить количество рабочих процессов (веб-сад)?

  1. Откройте IIS (Пуск ›inetmgr).
  2. На панели навигации слева выберите Пулы приложений.
  3. Найдите пул приложений, от имени которого работает секретный сервер. (Чтобы определить это, разверните слева Сайты, затем найдите веб-сайт, на котором работает секретный сервер. Щелкните веб-сайт секретного сервера или виртуальный каталог (если он запущен на одном из них) и нажмите Основные настройки на правой панели. Это будет указывать на пул приложений секретного сервера).
  4. Щелкните пул приложений правой кнопкой мыши и выберите Дополнительные настройки.

Вы можете посмотреть Что такое веб-сад? из Развертывания веб-сайтов ASP.NET на IIS 7.0 [codeproject.com], в котором говорится:

По умолчанию каждый пул приложений запускается с одним рабочим процессом (W3Wp.exe). Мы можем назначить несколько рабочих процессов с помощью одного пула приложений. Пул приложений с несколькими рабочими процессами называется «Веб-сады». Многие рабочие процессы с одним и тем же пулом приложений иногда могут обеспечить лучшую производительность и время отклика приложения. И каждый рабочий процесс должен иметь свой собственный поток и собственное пространство памяти.

Обратите внимание: это не поможет вам в каждом случае, вам нужно изучить использование ЦП на вашем сервере

Если у вас есть многопроцессорный веб-сервер (у большинства из них он есть), и вы не получаете от него производительности, вы можете рассмотреть возможность создания веб-сада. Основная идея состоит в том, что вместо одного рабочего процесса для службы IIS в саду есть один рабочий процесс на каждый ЦП, что повышает производительность.

Если процессор является узким местом, то добавление рабочих процессов не поможет повысить производительность.