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

Как определить, какой веб-сайт использует оперативную память в IIS / Windows Server 2003

У меня есть подозрение, что на веб-сайте на моем сервере есть утечка памяти, поскольку процесс w3wp.exe, похоже, растет быстрее, чем обычно, и у меня было несколько исключений OutOfMemoryExceptions.

Есть ли простой способ определить, сколько оперативной памяти использует каждый веб-сайт / пул приложений в IIS?

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

Далее вы используете iisapp.vbs: http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/b8721f32-696b-4439-9140-7061933afa4b.mspx?mfr=true это простая утилита командной строки.

Откройте диспетчер задач и добавьте столбец PID (идентификатор процесса). Запустите iisapp.vbs из командной строки, и он сообщит вам, какая служба w3wp.exe принадлежит какому пулу приложений (по PID), и вы можете сузить ее оттуда.

Если у вас есть Интернет с проблемой, изолированной в пуле приложений, и если вам нужна помощь в диагностике того, что вызывает утечку, вы можете воспользоваться инструментом отладки Microsoft IIS: http://www.microsoft.com/downloads/details.aspx?FamilyID=28bd5941-c458-46f1-b24d-f60151d875a3&DisplayLang=en

Затем:

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

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

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

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

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

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

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

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

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

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

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

У каждого пула приложений должен быть собственный процесс в диспетчере задач.

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

Вам также стоит взглянуть на: https://stackoverflow.com/questions/363680/stringbuilder-for-string-concatenation-throws-outofmemoryexception Поскольку это может быть причиной проблем с памятью.