Сбор дампов памяти

ADQM поддерживает возможность автоматического формирования файлов дампов памяти (core dump) при аварийных завершениях процессов ClickHouse. Дамп памяти может быть полезен администратору или разработчику для анализа состояния системы в момент сбоя и устранения причины возникновения ошибки.

Включение сбора дампов памяти

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

Выполнение действия сервиса ADQMDB

  1. Запустите действие Manage auto core dump для сервиса ADQMDB.

    Запуск действия Manage auto core dump
    Запуск действия Manage auto core dump
  2. В окне конфигурирования действия включите опцию Enable auto core dump и измените значения параметров хранения дампов при необходимости.

    Настройка действия Manage auto core dump
    Настройка действия Manage auto core dump
  3. Нажмите Next, а затем — Run в окне подтверждения запуска действия.

После того как действие Manage auto core dump успешно выполнено, на хостах ADQM будет установлен пакет systemd-coredump.

Например, чтобы проверить, что сервис для сбора дампов памяти успешно установлен и запущен, на хосте ADQM с операционной системой Ubuntu выполните следующую команду:

$ systemctl status systemd-coredump.socket

Сервис должен иметь статус active (listening):

systemd-coredump.socket - Process Core Dump Socket
    Loaded: loaded (/lib/systemd/system/systemd-coredump.socket; static)
    Active: active (listening) since Mon 2025-12-01 07:16:43 UTC; 45min ago
      Docs: man:systemd-coredump(8)
    Listen: /run/systemd/coredump (SequentialPacket)
   Accepted: 0; Connected: 0;
     CGroup: /system.slice/systemd-coredump.socket

Также можно убедиться, что сбор дампов включен, с помощью параметра Auto Core Dump Service в секции Other на странице конфигурации сервиса ADQMDB — должно быть установлено значение true.

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

Конфигурация сервиса systemd-coredump

Конфигурационные параметры установленного сервиса systemd-coredump можно посмотреть в файле /etc/systemd/coredump.conf. При вызове действия Manage auto core dump устанавливаются следующие параметры сервиса (в приведенном списке указаны значения по умолчанию):

  • Storage=external — дампы памяти будут храниться в каталоге /var/lib/systemd/coredump/;

  • MaxUse=100G — максимальный объем общего дискового пространства, который может быть использован для хранения дампов памяти (при достижении этого предела старые дампы будут удаляться);

  • ProcessSizeMax=50G — максимальный размер образа памяти аварийного процесса, который может быть сохранен;

  • ExternalSizeMax=100G — максимальный размер файла дампа памяти при хранении типа external.

ВАЖНО

В версиях ADQM до 25.8.16.34 создаваемые файлы дампов памяти по умолчанию имеют статус truncated, то есть дампы записываются не полностью, а значит в них может отсутствовать необходимая для отладки информация. Для того чтобы записывались полные дампы, а файле /etc/systemd/coredump.conf необходимо указать параметры ProcessSizeMax и ExternalSizeMax, так как они не настраиваются автоматически действием Manage auto core dump в предыдущих версиях ADQM.

Установка пакета adqm-clickhouse-common-dbgsym

Чтобы трассировки стека отображались в отладчике в удобном для чтения формате, необходимо установить пакет adqm-clickhouse-common-dbgsym (Ubuntu, Astra Linux) или adqm-clickhouse-common-debuginfo (Alt Linux, РЕД ОС).

Отключение сбора дампов памяти

Для отключения сбора дампов памяти запустите действие Manage auto core dump с деактивированной опцией Enable auto core dump.

Отключение сбора дампов памяти действием Manage auto core dump
Отключение сбора дампов памяти действием "Manage auto core dump"

Пример

Ниже приведен пример включения сбора дампов памяти на хостах ADQM с операционной системой Ubuntu и загрузки дампа в отладчик gdb для анализа трассировки стека.

  1. Выполните действие Manage auto core dump для сервиса ADQMDB с включенной опцией Enable auto core dump.

  2. Установите пакет adqm-clickhouse-common-dbgsym:

    $ sudo apt install adqm-clickhouse-common-dbgsym
  3. Установите отладчик gdb:

    $ sudo apt install gdb
  4. Проверьте, что каталог /var/lib/systemd/coredump/ не содержит файлов дампов памяти:

    $ sudo coredumpctl list
    No coredumps found.
  5. Определите PID процесса ClickHouse:

    $ pgrep -l clickhouse

    Пример PID процесса:

    6812 clickhouse-serv
  6. C помощью команды KILL отправьте сигнал SIGTRAP процессу ClickHouse:

    $ sudo KILL -s SIGTRAP 6812
  7. Проверьте, что файл дампа создан:

    $ sudo coredumpctl list
    TIME                          PID UID GID SIG     COREFILE  EXE                  SIZE
    Mon 2025-12-01 09:31:36 UTC  6812 997 997 SIGTRAP present   /usr/bin/clickhouse 13.3M
  8. Загрузите дамп в отладчик gdb:

    $ sudo coredumpctl gdb 6812

    Используйте команду bt (backtrace) для просмотра стека вызовов.

    Пример отображения обратной трассировки стека вызовов в отладчике gdb
    Пример отображения обратной трассировки стека вызовов в отладчике gdb
Нашли ошибку? Выделите текст и нажмите Ctrl+Enter чтобы сообщить о ней