ASP.NET - переработка пулов приложений, указывающая на проблему большего размера? - PullRequest
2 голосов
/ 11 декабря 2008

Является ли необходимость перезапуска пула приложений в ASP.NET показателем более серьезной проблемы в веб-приложении? Или это просто «так обстоят дела» для ASP.NET и IIS?

Изменить: Поскольку одна из ошибок является исключением «OutOfMemory», что бы вы посоветовали для действий? Вы бы добавили память? Профилировать приложение? (Важно отметить, что у меня есть свои идеи на этот счет, и у меня есть определенный путь, но я хотел бы услышать ваши ответы).

Ответы [ 3 ]

4 голосов
/ 11 декабря 2008

Функции мониторинга работоспособности IIS позволяют автоматически перерабатывать пул приложений. Таким образом, пул приложений, просто перерабатывающий сам по себе, не обязательно указывает на проблему; это может быть просто профилактическая функция IIS включена. Идея состоит в том, что если ваше приложение имеет утечку памяти или забывает освободить что-то, мы можем улучшить общую доступность приложения, периодически перезапуская его, как, например, как вы могли бы перезапустить Windows после того, как оно работало на вашем компьютере в течение месяца, чистый эффект небольшого плохого поведения многих приложений начинает сказываться.

На некоторых других платформах вы можете не заметить эти проблемы так быстро, особенно в среде CGI, поскольку вся инфраструктура настраивается, а затем срывается при каждом запросе страницы.

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

4 голосов
/ 11 декабря 2008

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

2 голосов
/ 11 декабря 2008

Существует множество причин, по которым пул приложений может быть переработан. Необработанные исключения или зависание потоков - частая причина. Если вы не закрываете все свои SqlConnections и пул соединений пуст, это может привести к его перезапуску. Тайм-аут тупика - это еще один случай: если у вас есть тупик, он повесит рабочий процесс, и это вызовет перезапуск. Кроме того, если IIS использует ненормальное количество ресурсов на сервере, он будет перезагружен (я думаю, по умолчанию это 60%)

Есть также много настроек iis, которые будут запускать его. Существуют настройки для регулярной перезагрузки (чтобы очистить состояние сеанса), я думаю, что по умолчанию это один раз каждые 24 часа. У нас есть около 40 умеренно-тяжёлых общедоступных объектов, которые мы собираемся утилизировать в течение низких периодов.

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

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