IIS Hang Устранение неполадок - PullRequest
1 голос
/ 13 марта 2009

Я использую веб-сайт на IIS 6 (Windows Server 2003), который иногда зависает.

Срок:

Выпущен на волю, сайт работал нормально на 3 дня.

Сайт зависает при каждом запросе до сайт остановлен и запущен.

Сайт работает в течение 2 недель без проблема.

Сайт зависает при каждом запросе до сайт перезапущен.

Перед началом зависания мы видим несколько записей журнала приложений: Неисправное приложение w3wp.exe, неисправный модуль неизвестен, адрес ошибки версии 0.0.0.0 -------.

Приложение, установленное на сайте, написано на .Net 2.0.

Может кто-нибудь подсказать мне, как устранить эту проблему? Спасибо!

Ответы [ 3 ]

2 голосов
/ 13 марта 2009

Лучше всего использовать adplus для захвата дампа памяти зависшего процесса w3wp, а затем использовать windbg + расширение sos, чтобы попытаться определить причину зависания.

Вы можете получить adplus и Windbg здесь: http://www.microsoft.com/whdc/devtools/debugging/default.mspx

Кроме того, блог Тесс Феррандез является абсолютной золотой жилой информации о том, как научиться анализировать дампы памяти с помощью Windbg. У нее даже есть набор лабораторий, через которые вы можете пройти, нацеленных на конкретные сценарии.

http://blogs.msdn.com/tess/default.aspx

0 голосов
/ 18 марта 2009

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

Мой совет состоит в том, чтобы дать вашему приложению собственный пул приложений, чтобы вы были на 100% уверены, что это приложение, по вашему мнению, рушит сервер, какую дозу сообщает журнал приложений, когда это происходит?

На основании предоставленной вами информации это звучит как утечка памяти или проблема с открытым подключением / потоком БД.

P.s Если вы используете N2, то была известная проблема, что при перезапуске IIS он не возвращался.

0 голосов
/ 13 марта 2009

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

.NET кэширует папки в вашем веб-приложении. На сервере есть раздел реестра (не помню где), который устанавливает ограничение на количество папок (хотите верьте, хотите нет). По умолчанию было установлено ограничение в 150 папок. Если в вашем веб-приложении было больше, чем столько папок, и вы пытались получить доступ к 151-й папке, это привело бы к сбою IIS.

Да, это звучит безумно, но поверьте мне, я провел несколько недель с Microsoft, пока мы не выяснили причину сбоя. Ответом на тот момент было увеличение лимита в реестре и перезагрузка сервера. Это было пару лет назад, и я надеюсь, что это было исправлено в последующих обновлениях, но я предлагаю это вам на случай, если вы используете более старую версию Server 2003.

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

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