Подтвердить что ты не робот

Должен ли я настраивать пул приложений ASP.NET на автоматическую переработку?

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

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

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

Любое понимание будет оценено.

4b9b3361

Ответ 1

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

IIS по умолчанию настраивает вновь созданные пулы приложений, чтобы перерабатывать каждые 1740 минут по этой причине.

Как вы сказали, это полоса. Хорошо написанное приложение, которое очищает все свои ресурсы (в том числе оборванных обработчиков событий), не должно протекать вообще.

Смотрите это сообщение в блоге о теме.