Перейти к основному содержимому

Аналитика производительности (Performance Insights)

Описание

Сведения

Функциональность доступна только для редакций Enterprise и Enterprise для ERP-систем.

Описание

В СУБД Pangolin реализован сбор данных активности текущих сессий с заданной периодичностью на определенную глубину по времени. Периодичность сбора данных обеспечивается созданием фонового процесса. Данные собираются с заданным в настройках периодом, по умолчанию раз в секунду.

Путь к папке, в которой сохраняются файлы с данными, может быть задан в настройках (значение по умолчанию ${PGDATA}/pg_perf_insights).

Для последующего анализа собранной статистики можно сформировать отчет с указанием временного диапазона. Отчет сохраняется в формате HTML. Описание и примеры разделов отчета представлены в разделе «Описание разделов отчета по аналитике производительности Pangolin» документа «Справочная информация».

Настройка

Конфигурационные параметры

примечание

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

При изменении пути к папке хранения файлов необходимо перенести содержимое старой папки в новую.

Настройка параметров для аналитики производительности осуществляется в файле postgresql.conf для конфигурации standalone, в файле postgres.yml для конфигурации cluster:

Параметр

Значение по умолчанию

Описание

performance_insights.enable

false

Включает или выключает функциональность

performance_insights.sampling_enable

true

Включает или выключает сбор данных.

После изменения настроек параметра требуется выполнить одно из предложенных действий:

  • перезагрузка;
  • вызов команды SELECT pg_reload_conf();;
  • отправить сигнал SIGHUP

performance_insights.sampling_period

1s

Задает периодичность сбора данных в миллисекундах. Минимальное значение 100ms, значение max — не ограничено

performance_insights.num_samples_in_ram

900

Задает количество итераций сбора данных активности текущих сессий, хранящихся в оперативной памяти. Определяет время хранения данных активности текущих сессий в оперативной памяти. Время определяется количеством сборов данных (performance_insights.num_samples_in_ram), умноженным на периодичность сбора данных (performance_insights.sampling_period). Таким образом, время хранения данных активности текущих сессий по умолчанию: 900 * 1s = 900 секунд (или 15 минут), при этом:

  • min значение – 0;
  • max значение – не ограничено (2^31-1).
Внимание!

При значении параметра 0 данные, собираемые performance_insights.num_samples_in_ram (Activity и Lock), будут записываться сразу на диск, без промежуточного сохранения в общей памяти. Это подразумевает частичный отказ от использования shared memory для хранения snapshots.

performance_insights.num_samples_in_files

86400

Задает количество итераций сбора данных активности текущих сессий, хранящихся в файлах (на диске). Определяет время хранения данных активности текущих сессий в файлах (на диске). Время определяется количеством сборов данных (performance_insights.num_samples_in_files) умноженное на периодичность сбора данных (performance_insights.sampling_period). Таким образом, время хранения данных активности текущих сессий по умолчанию 86400 * 1s = 86400 секунд (или 1 сутки), при этом:

  • min значение - 1;
  • max значение — не ограничено (2^31-1).
Внимание!

В СУБД Pangolin этот параметр применяется только при использовании формата по умолчанию (performance_insights.file_format = 0).

performance_insights.directory

Задает путь к папке, в которую сохраняются файлы с полученными данными (значение по умолчанию ${PGDATA}/pg_perf_insights);

Внимание!

Рекомендуется задать директорию хранения, находящуюся за пределами директории с данными СУБД (PGDATA).

В противном случае возможна потеря статистики при повторной инициализации кластера, например, при восстановлении из резервной копии.

performance_insights.masking

off

Включает или выключает маскирование параметров запроса, параметров соединения и имени пользователя. Возможные значения параметра - on, off, partial. Параметр performance_insights.masking рекомендуется поместить под защиту.

Внимание!

Возникновение предупреждения формата Invalid PL/pgSQL expression passed to masker, masking limited to input string only означает, что исходный запрос превышал ограничение по длине (тег окончания блока запроса не найден), но был замаскирован.

В СУБД Pangolin были добавлены следующие параметры конфигурации для оптимизации структуры хранения данных Performance Insights:

Параметр

Значение по умолчанию

Описание

performance_insights.shmem_limit

0

Задает ожидаемый объем общей памяти, заменяя собой ограничение по количеству сохраняемых выборок (performance_insights.num_samples_in_ram) путем автоматического пересчета.

По умолчанию этот параметр равен 0, что означает использование стандартных настроек, указанных в performance_insights. num_samples_in_ram. Но если задать ненулевое значение для performance_insights.shmem_limit, оно приобретает приоритет перед настройками performance_insights.num_samples_in_ram, приводя к автоматическому пересчету последних, с отображением предупреждения (warning).

Внимание!

Если указан параметр performance_insights.num_samples_in_ram = 0, общая память игнорируется вне зависимости от значения performance_insights.shmem_limit, переключаясь на работу без ее использования.

При ненулевом значении performance_insights.shmem_limit, если выделенного объема памяти недостаточно даже для сохранения одной выборки, появится предупреждение с рекомендацией увеличить лимит памяти. До тех пор, пока необходимая память не предоставлена, система записывает данные прямо на диск, имитируя поведение при performance_insights.num_samples_in_ram = 0.

performance_insights.file_format

0

Задает формат файла, используемый для хранения данных:

  • 0 - формат по умолчанию (1 минута в файле, старый формат, формат Default);
  • 1 - gzip (сжатие, хранение диапазоном секунд);
  • 2 - zstd (сжатие, хранение диапазоном секунд);
  • 3 - формат с диапазоном секунд (без сжатия)

performance_insights.packed_block_size

25MB

Задает размер распакованного блока данных, хранимых в одном файле. Допустимые значения – 5MB - 256MB

performance_insights.size_samples_in_files

0

Задает максимальный размер папки с данными. 0 - значение по умолчанию (означает, размер без ограничений). Диапазон 0 - (2^31-1)MB (только для форматов 1-3). При значении 0 файлы форматов (performance_insights.file_format) 1, 2, 3 не будут удаляться автоматически, ограничений на общий размер нет

performance_insights.compression_level

9

Задает уровень сжатия для алгоритмов хранения со сжатием. 9 - максимальное значение, 0 - минимальное (не рекомендуется). Для форматов 0, 3 игнорируется. Чем больше значение сжатия — тем сильнее нагрузка на CPU

Функции

Для работы с данными по аналитике производительности СУБД Pangolin применяются следующие функции:

  • pg_stat_get_activity_history — возвращает набор записей с данными об активности сессий в определенный момент времени;
  • pg_stat_get_activity_and_lock_status_history — возвращает данные активности текущих сессий вместе с данными блокировок (если они имеются) и затраченными ресурсами (CPU, IO);
  • pg_stat_get_activity_history_last — возвращает набор записей с данными об активности сессий в последний период обновления истории;
  • pg_lock_status_history — возвращает набор записей с информацией о блокировках в определенный момент времени;
  • pg_stat_activity_history_reset — функция для управления сохраненными данными, которая полностью очищает историю;
  • pg_stat_activity_and_lock_status_history_report — формирует отчет из собранных данных.
примечание

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

Описание функций (входные параметры / возвращаемые значения) и примеры использования представлены в отдельном документе «Справочная информация» раздел «Функции для аналитики производительности Pangolin».

Сбор данных

Для сбора данных в СУБД Pangolin создается дочерний процесс, в цикле которого происходит периодический опрос статистики активности и блокировок.

В дочернем процессе с заданной периодичностью собирается информация, связанная с текущей активностью серверных процессов:

  • информация об активности текущих серверных процессов (набор полей, аналогичный набору полей представления pg_stat_activity, дополнен полем с идентификатором запроса query_id и полем со временем сбора информации sample_time);
  • информация о блокировках, удерживаемых активными серверными процессами (набор полей, аналогичный набору полей представления pg_locks, дополнен полем со временем сбора информации sample_time).

Сохранение данных в памяти

Полученные записи сохраняются в shared memory.

Записи, у которых временная метка превышает интервал времени относительно текущего момента, сохраняются на диск в файл и удаляются из памяти.

примечание

Интервал времени в данном случае определяется периодом сбора данных умноженным на интервал хранения в памяти (performance_insights.sampling_period * performance_insights.num_samples_in_ram).

Файлы с полученными данными сохраняются в папку, путь к которой задается параметром конфигурации performance_insights.directory.

Сохранение данных на диск

Файлы с записями, у которых временная метка превышает интервал времени относительно текущего момента, удаляются с диска.

примечание

Интервал времени в данном случае определяется произведением суммы интервалов хранения в памяти и на диске на период сбора ((performance_insights.num_samples_in_ram + performance_insights.num_samples_in_files) * performance_insights.sampling_period).

При получении сигнала остановки процесса (SIGQUIT или SIGTERM) записи из оперативной памяти сохраняются в файл.

Управление

Отключение функциональности

Функциональность отключается значением параметра конфигурации performance_insights.enable = off.

Доработки

К ключевым доработкам Performance Insights относятся: