Должен ли я установить пул приложений ASP.NET для автоматического повторного использования? - PullRequest
13 голосов
/ 04 марта 2011

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

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

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

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

1 Ответ

9 голосов
/ 04 марта 2011

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

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

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

См. этот пост в блоге на эту тему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...