packcore

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

Инструмент packcore упаковывает файлы дампов памяти для отладки и анализа командами разработки.

1 Использование

packcore — это утилита на Python, поставляемая вместе с YMatrix.
Расположение утилиты:

$GPHOME/sbin/packcore  

Обратите внимание, что $GPHOME/sbin не добавлен в переменные окружения; поэтому необходимо использовать его абсолютный путь.

Пример использования:

$GPHOME/sbin/packcore -b $GPHOME/bin/postgres postgres.core.4_1635732782.17213  

Где:

  • -b $GPHOME/bin/postgres указывает путь к исполняемому бинарному файлу. Рабочие процессы создаются как дочерние от основного процесса postgres.
  • postgres.core.4_1635732782.17213 — сгенерированный файл дампа.

После выполнения команды в текущей директории будет создан сжатый архив (.tgz) с тем же базовым именем, что и файл дампа. Передайте этот архив команде разработки. Он содержит файл дампа и информацию о соответствующей среде выполнения.

2 Генерация дампов памяти

Для использования инструмента packcore операционная система должна сначала генерировать файлы дампов памяти.

Включите создание дампов памяти, настроив следующие параметры:

2.1 Установка лимита размера дампа памяти

Установите лимит размера дампа памяти как неограниченный:

ulimit -c unlimited  
# To make the setting persistent  
echo "ulimit -c unlimited" >> /etc/profile  

2.2 Настройка пути для дампов памяти

Отредактируйте конфигурацию sysctl:

vi /etc/sysctl.conf  

Добавьте в конец файла следующую запись kernel.core_pattern=/home/mxadmin/%e.core.%s_%t.

Примените конфигурацию с помощью:

sysctl -p  

Эта настройка определяет расположение и шаблон именования файлов дампов. Шаблон поддерживает следующие заполнители:

  • %e: Имя исполняемого файла
  • %s: Номер сигнала
  • %t: UNIX-метка времени