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

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

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

11.12.2008 03:40:20
Что ты имеешь в виду под "утилизацией"?
Aaron Fischer 11.12.2008 03:50:32
Это означает, в частности, что администратор должен войти на сервер и перезапустить App-пул, потому что пользователи получают ошибку (например, outOfMemory).
George Stocker 11.12.2008 11:13:59
Изменить: После просмотра «связанных» вопросов, я не нашел дубликат. Однако я убежден, что функция SO «Найти похожие вопросы» на странице «Задать вопрос» не работает, поскольку там ничего не появилось.
George Stocker 11.12.2008 11:29:24
3 ОТВЕТА
РЕШЕНИЕ

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

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

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

4
11.12.2008 03:48:15

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

4
11.12.2008 03:43:53

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

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

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

2
11.12.2008 04:45:46
Просто чтобы заметить - можно обойти проблему с потерянными сессиями, переместив ее из процесса. Включенная служба Windows сервера ASP.NET State Server является первым шагом в этом направлении; Единственное, что нужно, - это убедиться, что все, что вы добавляете, является [Сериализуемым].
Nicholas Piasecki 11.12.2008 05:19:58