Переработка отходов
Рециркуляция обычно *, когда IIS запускает новый процесс в качестве контейнера для вашего приложения, а затем передает старому значение ShutdownTimeLimit, чтобы удалить его по собственному желанию, прежде чем он будет убит.
* - обычно: см. настройку DisallowOverlappingRotation / «Disable overlapped recycle»
Это разрушительно , поскольку исходный процесс и вся информация о его состоянии отбрасываются. Использование состояния сеанса вне процесса (например, State Server или базы данных, или даже куки, если ваше состояние крошечное) может позволить вам обойти это.
Но он по умолчанию перекрывается - это означает, что продолжительность простоя минимизируется, потому что новый процесс запускается и подключается к очереди запросов, прежде чем старому сообщают: «у вас [ShutdownTimeLimit] секунд, чтобы уйти.
настройки
На ваш вопрос: все настройки на этой странице каким-то образом контролируют переработку. «Отключение» можно охарактеризовать как «упреждающая переработка» - когда сам процесс решает, что пора идти, и выходит упорядоченно.
Реактивная переработка - это то, где WAS обнаруживает проблему и снимает процесс (после установления подходящей замены W3WP).
Теперь вот некоторые вещи, которые могут вызвать переработку той или иной формы:
- ISAPI решает, что это вредно для здоровья
- сбой любого модуля
- время простоя
- ограничение процессора
- настройка свойств пула приложений
- как могла однажды закричала твоя мама : «Хватит на нее ковыряться , иначе она никогда не станет лучше!»
- сбой "ping" * на самом деле не ping, потому что он использует именованный канал - больше "обнаружение жизни"
- все настройки на скриншоте выше
Что делать:
В общем:
Отключить время простоя . 20 минут бездействия = бум! Новый процесс при следующем входящем запросе. Установите это в ноль.
Отключить обычный интервал времени - по умолчанию 29-часовой период был описан различными сторонами как «безумный», «раздражающий» и «умный». На самом деле, только два из них являются правдой.
При желании включите DisallowRotationOnConfigChange (см. Выше, « Отключить повторный вызов для изменений конфигурации» ), если вы просто не можете прекратить играть с ним - это позволяет вам изменять любой параметр пула приложений без немедленного оповещения рабочих процессов о том, что его нужно убить. Вам нужно вручную переработать пул приложений, чтобы настройки вступили в силу, что позволяет предварительно настроить параметры, а затем использовать окно изменений, чтобы применить их в процессе перезапуска.
Как правило, оставьте пинг включенным . Это ваша сеть безопасности. Я видел, как люди выключали его, а затем иногда сайт зависал на неопределенное время, что приводило к панике ... поэтому, если настройки слишком агрессивны для вашего приложения, которое, по-видимому, очень-очень-очень медленно реагирует, отведите их немного назад и посмотрите, что вы получите, а не выключите его. (Если у вас не настроен дамп режима авто-сбоя для зависших W3WP через ваш собственный процесс мониторинга)
Этого достаточно, чтобы заставить хорошо себя вести процесс жить вечно. Если он умрет, конечно, он будет заменен. Если она висит, пинг должен выбрать , что и новая должны начаться в течение 2 -х минут (по умолчанию, в худшем случае известково должен быть: до частоты пинга + пинг тайма - аута + запуск лимита времени , прежде чем запросы снова начать работать).
Обычно ограничение ЦП не представляет интереса, потому что по умолчанию оно отключено и в любом случае настроено так, чтобы ничего не делать; если бы он был настроен на уничтожение процесса, это был бы триггер. Оставь это. Примечание для IIS 8.x, регулирование ЦП также становится опцией.
(IIS) AppPool не является (.Net) AppDomain (но может содержать один / несколько)
Но ... тогда мы попадаем на .Net land и перерабатываем AppDomain, что также может привести к потере состояния. (См .: https://blogs.msdn.microsoft.com/tess/2006/08/02/asp-net-case-study-lost-session-variables-and-appdomain-recycles/ )
Короткая версия, вы делаете что коснувшись файл web.config в папке содержимого (снова с захватным!), Либо путем создания папки в этой папке, или файл ASPX, или .. другие вещи ... и это о такой же разрушительный, как и повторное использование пула приложений, за вычетом затрат на запуск собственного кода (это просто концепция управляемого кода (.Net), поэтому здесь происходит только управление управляемым кодом).
Антивирус также может вызвать это, поскольку он сканирует файлы web.config, вызывая уведомление об изменении, вызывая ....