Зачем даже перерабатывать пул приложений? - PullRequest
13 голосов
/ 21 января 2009

Может быть, кто-то может пролить свет на этот простой вопрос:

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

Я изучал настройки в своих пулах приложений и начал задаваться вопросом, почему я даже так часто перерабатывал (раз в 1 000 000 звонков или 2 часа).

Что бы помешало мне настроить авто-повторение на один раз в 24 часа или даже дольше? Почему бы не полностью удалить этот параметр и просто перезагрузить его, если память выходит из-под контроля для домена приложения?

Ответы [ 3 ]

8 голосов
/ 21 января 2009

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

Для нас полностью отключена утилизация, и вместо этого у нас есть задача, которая загружает тестовую страницу каждую минуту и ​​запускает iisreset, если не удается загрузить пять раз подряд.

6 голосов
/ 21 января 2009

Вероятно, вы должны смотреть на переработку с точки зрения надежности. Основываясь на исторических данных, вы должны иметь представление о том, сколько памяти, ЦП и т. Д. Использует ваше приложение, а также исторические шаблоны и когда начинаются проблемы. Зная это, вы можете настроить переработку, чтобы противостоять этим проблемам. Например, если вы знаете, что ваше приложение использует шаблон увеличения использования памяти *, который приводит к тому, что приложению не хватает памяти по прошествии нескольких дней, вы можете настроить его на перезагрузку до того, как это произойдет.

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

4 голосов
/ 21 января 2009

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

Кроме того, любой код, который не смог реализовать IDisposable, будет запускать финализаторы на повторном цикле, что, возможно, освободит удерживаемые ресурсы.

...