Я заметил, что в одном из моих рабочих веб-приложений, когда я вручную перезаписываю пул приложений, переработанный рабочий процесс может занять более 60 с лишним секунд, чтобы полностью его уничтожить, основываясь на просмотре его в диспетчере задач. Однако, если я полностью остановлю пул приложений, рабочий процесс уйдет почти мгновенно - в течение 1-2 секунд.
Итак, мой вопрос двоякий:
a) Почему уничтожение процесса занимает так много времени (и, что более важно, освобождает используемые / заблокированные им ресурсы), когда пул приложений перерабатывается вместо остановки; и
b) Предполагая, что я прекратил направлять трафик на сервер, есть ли причина НЕ останавливать / запускать вместо перезагрузки?
Edit:
Чтобы уточнить, перед тем, как я перезапущу или остановлю пул приложений, я прекращаю отправку трафика на рассматриваемый сервер (сервер находится в кластере с балансировкой нагрузки, и я удаляю сервер из балансировщика нагрузки). Таким образом, теоретически не должно быть никаких запросов на веб-сайт, когда я что-то делаю с пулом приложений.
Редактировать часть Deux:
После прочтения ссылки Игала мне кажется очевидным, что происходит. Когда я перезагружаю пул приложений, запускается новый процесс, но, поскольку трафик вообще отсутствует, он не регистрирует новый процесс как работающий, поэтому он не закрывает старый до истечения времени ожидания (а это 90 секунд).
С этим знанием мне становится ясно, что функциональность "Recycle" специально предназначена для использования в середине потока на работающем сервере, и, поскольку я заранее сливаю трафик вручную, я должен вместо этого использовать stop / start.