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

Как я могу диагностировать, что IIS подталкивает ЦП к 100% загрузке?

У меня есть веб-сервер, на котором работает несколько сайтов ASP.NET. Время от времени я замечаю, что IIS нагружает процессор сервера на 100%. Сайты совместно используют пулы приложений для каждой версии .NET, на которой они работают.

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

Я уже пробовал использовать ANTS. Однако с помощью ANTS вам нужно знать, какой это сайт, а затем запустить его и дождаться указанного веб-приложения, вызывающего сбой процессора. Не идеально.

Есть опыт / идеи?

Я ответил на тот же вопрос здесь: Пиковая нагрузка на ЦП IIS6

Ниже текст из моего ответа:

Сколько пулов приложений? Вы можете начать с перемещения своих веб-сайтов в отдельные пулы приложений, а затем использовать диспетчер задач + командную строку iisapp, чтобы сопоставить, какой пул приложений соответствует какой задаче. Это поможет вам определить, с какой сети начать.

Как только вы это определили, возьмите инструмент отладки Microsoft IIS: http://www.microsoft.com/download/en/details.aspx?id=26798

Затем:

Использование диагностики отладки IIS для устранения неполадок, связанных с использованием ЦП рабочего процесса в II6

Отслеживание неудачных запросов в IIS7 может помочь отследить многие проблемы с производительностью веб-сайтов, но у нас по-прежнему есть обширная клиентская база по IIS6. Устранение проблем с производительностью в IIS6 было довольно сложным, пока Microsoft не выпустила набор инструментов, которые позволили лучше понять анализ трассировки стека.

Средство диагностики отладки IIS может помочь отследить проблемы с процессором и памятью рабочего процесса. У Microsoft есть хорошая статья в kb, в которой также рассказывается об основах: http://support.microsoft.com/kb/919791.

  1. Установите диагностику отладки IIS локально в системе.

  2. Откройте средство диагностики отладки в разделе Пуск> Программы> Диагностика IIS> Средство диагностики отладки> Средство диагностики отладки.

  3. Щелкните Инструменты> Параметры и настройки> вкладка Журнал производительности. Выберите параметр «Включить регистрацию данных счетчика производительности». Щелкните ОК.

  4. Используйте диспетчер задач, чтобы найти PID рабочего процесса.

  5. Выберите вкладку «Процессы» и найдите процесс в списке.

  6. Щелкните процесс правой кнопкой мыши и выберите «Создать полный пользовательский дамп». Это займет несколько минут, и появится всплывающее окно, в котором будет указан путь к файлу дампа.

  7. Выберите вкладку «Расширенный анализ» и нажмите кнопку «Добавить файлы данных». Перейдите к файлу дампа, который был создан скачком, и нажмите OK.

  8. В поле «Доступные сценарии анализа» выберите «Анализаторы сбоев / зависаний» для анализа производительности ЦП и сбоев. Щелкните Начать анализ.

Через несколько минут должен быть сгенерирован отчет, содержащий информацию трассировки стека, а также информацию о любых запросах, выполняемых более 90 секунд. Обратите внимание, что для дампа памяти используется несколько сотен мегабайт места, поэтому не забудьте установить инструмент на диск с достаточным пространством для отладки. Кроме того, если ящик находится под большой нагрузкой, вы можете создать пользовательский дамп в системе, скопировать файл на свою рабочую станцию ​​и выполнить анализ локально.

Некоторые люди считают хорошей практикой создание пула приложений для каждого веб-сайта / приложения, чтобы при перезапуске веб-сайта это не повлияло на другие. Точно так же он создаст новый рабочий процесс IIS w3p.exe для каждого веб-сайта, и я считаю, что таким образом вы сможете легче контролировать каждый мой сайт, достигающий пика процессора.

Затем, чтобы детально наблюдать за использованием ЦП, вы можете, например, использовать Process Explorer из Miscrosft Sysinternal. http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx это отличный бесплатный инструмент, с помощью которого вы можете собрать интересующую вас информацию.

Надеюсь, мой совет каким-то образом поможет устранить проблему с IIS.

Есть очень простой способ сделать это, по крайней мере, в IIS8, не знаю, существовало ли это в IIS6. В любом случае я думаю, что это полезно.

  • Вы переходите в IIS
  • Выберите свой сервер слева
  • щелкните значок Рабочие процессы
  • см. ЦП / память для каждого приложения