Поделиться через


Сбор данных для утечки управляемой памяти

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

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

Дополнительные сведения об анализе дампов памяти вместе с примером сценария см . в примере устранения неполадок.

Проблема утечки памяти легко реплицируется

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

Метод 1. Использование Procdump

Примечание.

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

  1. Скачайте и установите средство Procdump.exe на сервере.

  2. Запустите командную строку от имени администратора.

  3. В командной строке перейдите в папку, в которой сохранены Procdump.exe .

  1. Выполните следующую команду: procdump.exe -s 30 -ma -n 3 <PID>.

    Замените <PID> фактическим ИДЕНТИФИКАТОРом w3wp.exe процесса, который сталкивается с проблемой с высокой памятью. Дополнительные сведения о том, как получить piD, выполните действия, описанные в разделе "Определение высокого объема памяти".

    • -n: этот параметр — это количество дампов памяти для сбора.
    • -s: этот параметр является интервалом (в секундах) между дампами.

После создания первого дампа памяти появится подтверждение в командной строке. По умолчанию дамп памяти сохраняется в том же расположении, что и procdump.exe.

Если вы используете другие варианты Procdump, которые зависят от конкретных условий для активации дампа, следите за идентификатором piD. Если это изменится, необходимо остановить команду и снова запустить ее с новым идентификатором PID. В противном случае дампы памяти не будут созданы.

Метод 2. Использование DebugDiag

  1. Скачайте и установите средство диагностики отладки версии 2 с обновлением 3.2.

  2. При утечке памяти откройте коллекцию DebugDiag 2 из меню "Пуск ":

    Снимок экрана: коллекция DebugDiag 2.

    Примечание.

    Если необходимо изменить путь, в котором создаются дампы, выберите пункт "Параметры инструментов>" и "Параметры>" вручную сохранить папку userdump, чтобы изменить ее.

  3. Перейдите на вкладку "Процессы ".

  4. Найдите процесс w3wp со столбцом идентификатора процесса приложения, который находится под вопросом.

    Замените <PID> фактическим ИДЕНТИФИКАТОРом w3wp.exe процесса, который сталкивается с проблемой с высокой памятью. Дополнительные сведения о том, как получить piD, выполните действия, описанные в разделе "Определение высокого объема памяти".

  5. Щелкните правой кнопкой мыши процесс w3wp , выберите "Создать серию Userdump" и задайте следующие параметры (при необходимости настройте числа). Не нажимайте кнопку "Сохранить" и "Закрыть".

    Снимок экрана: настройка серии UserDump.

  6. Когда потребление памяти w3wp.exe достигает предела, как описано в ограничениях памяти для разных сценариев, нажмите кнопку "Сохранить и закрыть".

    Дампы начнут генерироваться немедленно.

Проблема утечки памяти периодически возникает

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

Примечание.

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

  1. Скачайте и установите средство Procdump.exe на сервере.

  2. Запустите командную строку от имени администратора.

  3. В командной строке перейдите в папку, в которой сохранены Procdump.exe .

  1. Выполните следующую команду: procdump.exe -s 30 -m <memoryConsumption> -ma -n 3 <PID>.

    Замените <PID> фактическим ИДЕНТИФИКАТОРом w3wp.exe процесса, который сталкивается с проблемой с высокой памятью. Дополнительные сведения о том, как получить piD, выполните действия, описанные в разделе "Определение высокого объема памяти".

    • -n: этот параметр — это количество дампов памяти для сбора.
    • -m: этот параметр является пороговым значением фиксации памяти (в МБ) для создания дампов.
    • -s: этот параметр может иметь разные значения на основе других параметров в команде procdump .

    При использовании -m команды указывает количество последовательных секунд, -s в течение которых потребление памяти w3wp.exe равно >пороговому -mзначению.

    Например, если команда имеет значение procdump.exe -s 30 -m 5120 -ma -n 3 <PID>, потребление памяти процесса должно быть >равно 5120 МБ (5 ГБ) не менее 30 секунд, чтобы создать дамп. Если первый дамп записывается, но затем память удаляется менее чем на 5120 МБ, второй и третий дампы не будут собираться, и память должна увеличиваться до 5120 МБ или выше и оставаться таким образом в течение 30 секунд для создания второго дампа и т. д. Таким образом, -s здесь не обязательно означает интервал между дампами.

После создания первого дампа памяти появится подтверждение в командной строке. По умолчанию дамп памяти сохраняется в том же расположении, что и procdump.exe.

Если вы используете другие варианты Procdump, которые зависят от конкретных условий для активации дампа, следите за идентификатором piD. Если это изменится, необходимо остановить команду и снова запустить ее с новым идентификатором PID. В противном случае дампы памяти не будут созданы.

Дополнительная информация

Общие сведения о проблемах с высоким потреблением памяти