Пулы приложений IIS - Стоп / Старт против Корзины
Я заметил, что в одном из моих производственных веб-приложений, когда я вручную перезаписываю пул приложений, переработанный рабочий процесс может полностью занять более 60 секунд, чтобы полностью его уничтожить, если посмотреть его в диспетчере задач. Однако, если я полностью остановлю пул приложений, рабочий процесс уйдет почти мгновенно - в течение 1-2 секунд.
Итак, мой вопрос состоит из двух частей:
a) Почему уничтожение процесса занимает так много времени (и, что более важно, освобождение ресурсов, используемых / заблокированных им), когда пул приложений перерабатывается, а не останавливается; а также
б) Предполагая, что я остановил трафик от направления на сервер, есть ли причина НЕ останавливать / запускать вместо перезагрузки?
Редактировать:
Для пояснения, прежде чем я перезапущу или остановлю пул приложений, я прекращаю отправку трафика на рассматриваемый сервер (сервер находится в кластере с балансировкой нагрузки, и я удаляю сервер из балансировщика нагрузки). Таким образом, теоретически, не должно быть никаких запросов на веб-сайт, когда я делаю что-либо для пула приложений.
Редактировать часть Deux:
После прочтения ссылки Игала мне кажется очевидным, что происходит. Когда я перезагружаю пул приложений, запускается новый процесс, но, поскольку трафик вообще отсутствует, он не регистрирует новый процесс как работающий, поэтому он не закрывает старый до истечения времени ожидания (а это 90 секунд).
С этим знанием мне становится ясно, что функциональность "Recycle" специально предназначена для использования в середине потока на живом сервере, и, поскольку я заранее сливаю трафик вручную, я должен вместо этого использовать stop/start.
4 ответа
А) из-за повторного использования. Существует период времени, в течение которого "старый" процесс ожидает запуска нового.
б) Нет. Насколько я знаю.
Перезапуск, если я правильно помню, позволяет завершить все существующие запросы, а затем пойдет пул приложений. Остановка просто завершает ее в тот самый момент, когда вы ее останавливаете.
По этой ссылке
Остановка - остановив пул приложений, вы даете команду всем рабочим процессам IIS, обслуживающим этот пул приложений, завершить работу и предотвращаете запуск любых дополнительных рабочих процессов до тех пор, пока пул приложений не будет запущен снова. Это инициирует постепенное завершение рабочих процессов, при этом каждый рабочий процесс пытается истощить все свои запросы и затем завершиться.
Если рабочий процесс не завершает работу в течение времени, указанного в свойстве конфигурации shutdownTimeLimit в элементе processModel определения каждого пула приложений (по умолчанию: 90 секунд), WAS принудительно завершит его (этого не произойдет, если подключен собственный отладчик),
Поэтому остановка пула приложений является разрушительным действием, которое вызывает выгрузку доменов приложений ASP.NET, дочерних процессов FastCGI и потерю любого состояния приложения в процессе.
Утилизация - переработка пула приложений вызывает постепенное завершение всех работающих в настоящее время рабочих процессов IIS в этом пуле приложений, но в отличие от остановки пула новые рабочие процессы IIS могут запускаться по требованию для обработки последующих запросов.
Утилизация пула приложений - это хороший способ вызвать сброс состояния приложения и любой конфигурации, кэшированной рабочими процессами IIS, которая не обновляется автоматически (в основном это ключи глобального реестра), не нарушая работу сервера. Это делает переработку пула приложений отличной альтернативой IISRESET в большинстве случаев.
Остановка
- Осторожно остановите все существующие рабочие процессы для этого пула приложений.
- НЕ разрешайте запускать новые рабочие процессы для этого пула приложений.
Переработка отходов
- Осторожно остановите все существующие рабочие процессы для этого пула приложений.
- Разрешить запуск новых рабочих процессов для этого пула приложений.
- Сбросить состояние приложения и кеш
Примечание. Пункт 1 для обоих абсолютно одинаков. Пункт 3 не относится к остановке, потому что, ну, процесс ушел, поэтому состояние, очевидно, исчезло.