Технологические вопросы крупных внедрений
03.03.2021
В рамках проектов ЦКТП и в КОРП поддержке платформы 1С:Предприятие теперь доступна возможность провести анализ памяти процессов платформы 1С:Предприятие на предмет выявления причин проблем, приводящих к значительному потреблению памяти.
Для того чтобы воспользоваться этой услугой, необходимо сделать следующее.
Убедиться, что потребление памяти одним процессом платформы 1С:Предприятие составляет значительный объем, например, превышает 20 Гб. Значительный объем памяти не объясняется известными ресурсоемкими операциями, выполняемыми на сервере в этот момент.
Оценить, воспроизводится ли проблема. Проблема также может воспроизводиться в рабочей системе периодически. Если воспроизведение проблемы известно, то его следует передать в поддержку.
Убедиться, что в данный момент проблема не воспроизводится. Далее необходимо получить дамп памяти процесса, анализ которого будет выполняться в дальнейшем, и запомнить pid этого процесса.
Этот шаг опциональный. Но если его выполнить, то расследование и анализ может упроститься.
Воспроизвести проблему или дождаться момента её воспроизведения.
Если выполнялся шаг 3, то убедиться, что pid процесса не изменился. Это нужно для того, чтобы в итоге получить два дампа от одного и того же процесса.
Получить дамп процесса со значительным потреблением памяти.
Поместить собранные дампы в архив и передать в КОРП поддержку или ЦКТП.
Специалисты поддержки проанализируют полученные данные и предоставят заключение с результатами анализа.
Для получения дампа процесса в ОС 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. Полученный файл следует передать в поддержку вместе с файлом дампа.