Странное увеличение памяти при перезапуске пула приложений - PullRequest
1 голос
/ 14 декабря 2010

Я хотел бы описать странную проблему, которую я заметил при анализе моего приложения asp.net в производственной среде, и попросить совета или мнения по следующему вопросу.

Приложение обычно работает с 80-90МБ памяти.Это кажется стабильным, поскольку утечек памяти пока не обнаружено - незначительное увеличение использования памяти с течением времени.Тем не менее, проблема возникает, когда пул приложений перезагружается (я использую общий хостинг и, судя по журналам, это происходит, когда приложение простаивает в течение 20 минут или каждые ~ 30 часов - что-то в этом роде).Проблема в том, что используемая память за период перезарядки почти удваивается - до 160-170 МБ без объяснения причин.Это сбивает с толку, так как принято утверждать, что утилизация должна очистить память и все другие ресурсы - по крайней мере, я так понимаю.Система удерживает этот объем памяти в течение 7-8 часов, а затем использование памяти падает до ее обычного уровня 90-100 МБ, опять же, без видимой причины (по крайней мере, мне не известно).Все время кажется, что приложение работает хорошо - без существенных задержек или проблем с доступностью сайта - пользователям все кажется в порядке, никаких жалоб пока нет.Если посмотреть на график потребления памяти с течением времени - он выглядит почти как пошаговая функция.

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

Итак, что я хотел бы знать - есть ли возможный сценарий, когда переработка пула приложенийне освобождает все ресурсы памяти?Есть какой-нибудь совет или руководство, на чем я должен сосредоточиться?Я не эксперт в этой области, но я читал о таких вещах, как повторяющаяся переработка, проблемы с сериализацией при переработке и еще пара вопросов ... Есть идеи?Подобный опыт?

Спасибо

1 Ответ

0 голосов
/ 14 декабря 2010

В этом посте содержится довольно хороший обзор того, что происходит, когда пул приложений вашего сайта перерабатывается: http://blogs.msdn.com/b/tess/archive/2006/08/02/asp-net-case-study-lost-session-variables-and-appdomain-recycles.aspx

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

ИМХО, если вы используете ~ 100 мегабайт памяти на общем хосте, вы будете беспокоиться, если это хосткак DiscountASP.NET или GoDaddy.Если вам не безразличен этот веб-сайт, приобретите VPS или какой-нибудь более настраиваемый хостинг, где вы можете заплатить больше за более высокий лимит памяти.

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