Технологические вопросы крупных внедрений
03.03.2021

Анализ потребления памяти процессами платформы 1С:Предприятие

 

В рамках проектов ЦКТП и в КОРП поддержке платформы 1С:Предприятие теперь доступна возможность провести анализ памяти процессов платформы 1С:Предприятие на предмет выявления причин проблем, приводящих к значительному потреблению памяти.

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

 

Шаг 1

Убедиться, что потребление памяти одним процессом платформы 1С:Предприятие составляет значительный объем, например, превышает 20 Гб. Значительный объем памяти не объясняется известными ресурсоемкими операциями, выполняемыми на сервере в этот момент.

Шаг 2

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

Шаг 3

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

Этот шаг опциональный. Но если его выполнить, то расследование и анализ может упроститься.

Шаг 4

Воспроизвести проблему или дождаться момента её воспроизведения.

Шаг 5

Если выполнялся шаг 3, то убедиться, что pid процесса не изменился. Это нужно для того, чтобы в итоге получить два дампа от одного и того же процесса.

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

Шаг 6

Поместить собранные дампы в архив и передать в КОРП поддержку или ЦКТП.

Шаг 7

Специалисты поддержки проанализируют полученные данные и предоставят заключение с результатами анализа.

 

 

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

Для получения дампа процесса в ОС Windows можно воспользоваться утилитой procdump:

https://docs.microsoft.com/en-us/sysinternals/downloads/procdump

Пример команды: procdump.exe –ma 1234

где 1234 – это PID процесса.

Для получения дампа процесса в ОС Linux можно воспользоваться утилитой gcore.

Пример команды: gcore –o d.core 1234

где d.core – это имя файла дампа, а 1234 – это PID процесса.

 

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

Копировать

Пример вызова скрипта следующий:  ./extractLibs.sh d.core.1234 /opt/1C/v8.3/x86_64/rmngr

где d.core.1234 – это имя файла дампа, а /opt/1C/v8.3/x86_64/rmngr – это путь до исполняемого файла. В результате его запуска будет сгенерирован скрипт сбора библиотек: d.core.1234_getlibs.sh. После его запуска на целевой системе будет создан архив libs-d.core.1234.tar.gz, который нужно передать в поддержку вместе с файлом дампа.

 

В случае использования Windows полезным также будет использование утилиты vmmap.

При запуске утилиты необходимо выбрать исследуемый процесс, далее сохранить полученную статистику в файл *.mmp. Полученный файл следует передать в поддержку вместе с файлом дампа.