Назад | Перейти на главную страницу

Сайт зависает в iis7 - как устранить неполадки?

В настоящее время у меня проблема с сервером Windows 2008, на котором работает IIS 7. На сервере работает несколько сайтов, но, похоже, проблема возникает только с одним конкретным сайтом.

Время от времени весь сервер замедляется до сканирования, и почти все запросы истекают по таймауту! Неизменно, когда мы входим в систему, чтобы посмотреть, всегда есть процесс IIS, использующий около 90% процессора. Если посмотреть на рабочие процессы в IIS, то обычно можно увидеть один или два запроса, которые выполняются в течение длительного времени. Они всегда находятся в состоянии ExecuteRequestHandler с ManagedPipeline в качестве имени модуля, а текущие, на которые я смотрю, были запущены для 7686248 (в каких единицах это находится, не сказано?). Это также не всегда одна и та же страница, на самом деле мы видели как минимум 3 разные страницы, перечисленные под URL-адресом, когда это произошло.

Похоже, единственный способ вернуть сервер к жизни - убить 90% -ный процесс!

Сайт работает под .Net 4.0, и его код очень похож на код других сайтов на сервере, у которых нет проблем!

Как мне начать устранение неполадок?

Кажется, что приложение ASP.NET работает плохо, пахнет очень длинным / бесконечным циклом.

Я бы включил отслеживание неудачных запросов и ограничил бы его на основе запросов, которые занимают больше 60 секунд для каждого контента и каждого кода состояния (используйте диапазон 100-600).

Кроме того, хотя это и не отображается в пользовательском интерфейсе, вы также можете настроить командную строку для запуска, где вы можете создать дамп процесса, чтобы впоследствии вы могли использовать отладчик (например, Windbg + SOS.dll), чтобы точно видеть, где находятся запросы и что они делают. Вероятно, это лучший способ, но он требует некоторых знаний об инструментах отладки Windows. http://www.microsoft.com/whdc/devtools/debugging/default.mspx .

Более простой альтернативой является то, что вы также можете инструментировать свое приложение, в частности URL-адреса и страницы, которые вы видели, занимают так много времени (кстати, время в миллисекундах, поэтому ваша страница заняла более 2 часов !!!), вы можете использовать System.Diagnostics или Page.Trace и направьте их в журнал FREB, и таким образом вы получите значимую информацию.

Возможно, посмотрите на включение дополнительного ведения журнала: http://technet.microsoft.com/en-us/library/cc731798%28WS.10%29.aspx