Распространенные зависания ASP.NET - PullRequest
2 голосов
/ 09 ноября 2010

Недавно мы столкнулись с некоторыми странными периодически возникающими проблемами в нашем приложении ASP.NET. Эти проблемы будут включать в себя:

  • Статические переменные становятся неинициализированными
  • Отключение фоновых тем
  • (InProc) состояние сеанса теряется

Странно было то, что эти проблемы возникали примерно каждые 30 часов. «Странно», - подумали мы ...

Что ж, я уверен, что некоторые из вас думают: «Похоже, для меня это свойство App Pool Recycle». Ты прав. Для нашего пула приложений было установлено значение по умолчанию 1740 минут, после чего он автоматически перезагружался, что приводило к потере состояния, статики и т. Д.

Итак, я хочу сказать, что в IIS, ASP.NET есть некоторые вещи, которые могут вызывать периодические зависания. С какими вещами вы столкнулись?

Для начала,

Изменение файла web.config может привести к перезапуску приложения, что приведет к завершению всех сеансов (при использовании режима InProc).

Большое спасибо,

Ответы [ 2 ]

2 голосов
/ 09 ноября 2010

Вы также можете рассмотреть возможность сбоя процесса w3wp.exe, в котором работает asp.net, из-за необработанного исключения, связанного с платформой. Если это является частью проблемы, вы найдете записи в журнале событий системы и приложений на сервере-виновнике, которые конкретно указывают на остановку обработки w3wp.exe. Проблема в том, что он не скажет вам, почему. Он будет только записывать, что что-то заставило его перестать функционировать.

Чтобы смягчить симптомы, вы можете начать с отделения сеанса от процесса w3wp.exe, изменив InProc на сервер состояний (локальный или sql). Сеанс больше не будет потерян, если этот процесс завершится с ошибкой, но он будет восстановлен в памяти при первой возможности. Вы также можете изменить настройки в вашем пуле приложений, чтобы перерабатывать с другой скоростью. Если w3wp.exe дает сбой, вам, вероятно, потребуется гораздо более быстрая утилизация и, возможно, удалить «Включить защиту от сбоев».

Все это только маскирует проблему. Чтобы изолировать проблему такого рода, вам необходимо установить и запустить IIS Debug Diagnostic Tool . Его отчеты о сбоях / зависаниях очень информативны и абсолютно необходимы для поиска проблем, возникающих в темном пространстве между Asp.Net и IIS.

0 голосов
/ 09 ноября 2010

Только для устранения неполадок сеанса этого должно хватить ... http://aspalliance.com/1182

С другой стороны, возможны зависания по многим другим причинам. Лучший способ исправить такие проблемы - использовать любой инструмент, например windbg или Debug Diagnostics, для создания дампов в случае возникновения проблем и создания дампов памяти. Позже эти дампы памяти могут быть проанализированы на наличие проблем.

http://blogs.msdn.com/tess содержит много сообщений об отладке различных сценариев.

...