Пулы приложений IIS - Стоп / Старт против Корзины - PullRequest
32 голосов
/ 24 декабря 2008

Я заметил, что в одном из моих рабочих веб-приложений, когда я вручную перезаписываю пул приложений, переработанный рабочий процесс может занять более 60 с лишним секунд, чтобы полностью его уничтожить, основываясь на просмотре его в диспетчере задач. Однако, если я полностью остановлю пул приложений, рабочий процесс уйдет почти мгновенно - в течение 1-2 секунд.

Итак, мой вопрос двоякий:

a) Почему уничтожение процесса занимает так много времени (и, что более важно, освобождает используемые / заблокированные им ресурсы), когда пул приложений перерабатывается вместо остановки; и

b) Предполагая, что я прекратил направлять трафик на сервер, есть ли причина НЕ останавливать / запускать вместо перезагрузки?


Edit:
Чтобы уточнить, перед тем, как я перезапущу или остановлю пул приложений, я прекращаю отправку трафика на рассматриваемый сервер (сервер находится в кластере с балансировкой нагрузки, и я удаляю сервер из балансировщика нагрузки). Таким образом, теоретически не должно быть никаких запросов на веб-сайт, когда я что-то делаю с пулом приложений.


Редактировать часть Deux:
После прочтения ссылки Игала мне кажется очевидным, что происходит. Когда я перезагружаю пул приложений, запускается новый процесс, но, поскольку трафик вообще отсутствует, он не регистрирует новый процесс как работающий, поэтому он не закрывает старый до истечения времени ожидания (а это 90 секунд).

С этим знанием мне становится ясно, что функциональность "Recycle" специально предназначена для использования в середине потока на работающем сервере, и, поскольку я заранее сливаю трафик вручную, я должен вместо этого использовать stop / start.

Ответы [ 3 ]

26 голосов
/ 24 декабря 2008

а) Из-за Перекрытой утилизации . Существует период времени, в течение которого «старый» процесс ожидает запуска нового.

б) Нет. Насколько я знаю.

13 голосов
/ 24 декабря 2008

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

0 голосов
/ 28 июля 2018

По по этой ссылке ,

Остановка - остановив пул приложений, вы даете команду всем рабочим процессам IIS, обслуживающим этот пул приложений, завершиться, и предотвратить запуск любых дополнительных рабочих процессов до пул приложений запускается снова. Это инициирует изящный завершение рабочих процессов, при этом каждый рабочий процесс пытается чтобы слить все свои запросы и затем выйти.

Если рабочий процесс не завершается в течение указанного времени с помощью свойства конфигурации shutdownTimeLimit в processModel элемент определения каждого пула приложений (по умолчанию: 90 секунд), WAS принудительно прервет его (этого не произойдет, если собственный отладчик прилагается).

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

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

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

...