Аналитика производительности (Performance Insights)
Описание
Функциональность доступна только для редакций Enterprise и Enterprise для ERP-систем.
Описание
В СУБД Pangolin реализован сбор данных активности текущих сессий с заданной периодичностью на определенную глубину по времени. Периодичность сбора данных обеспечивается созданием фонового процесса. Данные собираются с заданным в настройках периодом, по умолчанию раз в секунду.
Дополнительно в статистику активности добавлено поле wait_event_start, содержащее время начала текущего события ожидания серверного процесса, зафиксированное в момент сбора данных. Поле используется для расчета оценочной длительности ожиданий и для дифференциации событий ожидания с одинаковыми типом и именем в разных срезах статистики.
Путь к папке, в которой сохраняются файлы с данными, может быть задан в настройках (значение по умолчанию ${PGDATA}/pg_perf_insights).
Для последующего анализа собранной статистики можно сформировать отчет с указанием временного диапазона. Отчет сохраняется в формате HTML. Описание и примеры разделов отчета представлены в разделе «Описание разделов отчета по аналитике производительности Pangolin» документа «Справочная информация».
Настройка
Конфигурационные параметры
Для применения внесенных изменений настроечных параметров необходимо выполнить перезагрузку.
При изменении пути к папке хранения файлов необходимо перенести содержимое старой папки в новую.
Для включения сбора времени начала события ожидания используется параметр конфигурации monitor_wait_event_start. При значении on в статистику активности добавляется и заполняется поле wait_event_start, содержащее время начала текущего события ожидания серверного процесса, зафиксированное в момент сбора данных. При значении off поле wait_event_start присутствует в результатах функций и представлений, но для всех строк имеет значение NULL.
Параметр monitor_wait_event_start имеет контекст PGC_SIGHUP и требует перечитывания конфигурации (например, с помощью SELECT pg_reload_conf(); или отправки серверу сигнала SIGHUP).
Настройка параметров для аналитики производительности осуществляется в файле postgresql.conf для конфигурации standalone, в файле postgres.yml для конфигурации cluster:
Параметр | Значение по умолчанию | Описание |
|---|---|---|
|
| Включает или выключает функциональность |
|
| Включает или выключает сбор данных. После изменения настроек параметра требуется выполнить одно из предложенных действий:
|
|
| Задает периодичность сбора данных в миллисекундах. Минимальное значение |
|
| Задает количество итераций сбора данных активности текущих сессий, хранящихся в оперативной памяти. Определяет время хранения данных активности текущих сессий в оперативной памяти. Время определяется количеством сборов данных (
Внимание! При значении параметра |
|
| Задает количество итераций сбора данных активности текущих сессий, хранящихся в файлах (на диске). Определяет время хранения данных активности текущих сессий в файлах (на диске). Время определяется количеством сборов данных (
Внимание! В СУБД Pangolin этот параметр применяется только при использовании формата по умолчанию ( |
| Задает путь к папке, в которую сохраняются файлы с полученными данными (значение по умолчанию Внимание! Рекомендуется задать директорию хранения, находящуюся за пределами директории с данными СУБД ( В противном случае возможна потеря статистики при повторной инициализации кластера, например, при восстановлении из резервной копии. | |
|
| Включает или выключает маскирование параметров запроса, параметров соединения и имени пользователя. Возможные значения параметра - Внимание! Возникновение предупреждения формата |
|
| Включает сбор времени начала события ожидания. Требует |
|
| Активирует сохранение в отчетах данных по процессам находящимся в статусе Внимание! Включение и отключение |
|
| Активирует сохранение в отчетах данных по процессам находящимся в статусе |
В СУБД Pangolin были добавлены следующие параметры конфигурации для оптимизации структуры хранения данных Performance Insights:
Параметр | Значение по умолчанию | Описание |
|---|---|---|
|
| Задает ожидаемый объем общей памяти, заменяя собой ограничение по количеству сохраняемых выборок ( По умолчанию этот параметр равен Внимание! Если указан параметр При ненулевом значении |
|
| Задает формат файла, используемый для хранения данных:
|
|
| Задает размер распакованного блока данных, хранимых в одном файле. Допустимые значения – |
|
| Задает максимальный размер папки с данными. |
|
| Задает уровень сжатия для алгоритмов хранения со сжатием. |
Функции
Для работы с данными по аналитике производительности СУБД 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и полемwait_event_start); - информация о блокировках, удерживаемых активными серверными процессами (набор полей, аналогичный набору полей представления
pg_locks, дополнен полем со временем сбора информацииsample_time).
Сбор и заполнение поля wait_event_start выполняются только при включенном параметре monitor_wait_event_start; при его значении off поле присутствует в срезах, но всегда имеет значение NULL.
Отображение времени начала ожидания
При включенном параметре monitor_wait_event_start в статистике активности фиксируется время начала текущего события ожидания (wait_event_start), зафиксированное в момент сбора данных. Поле доступно в расширенном представлении pg_stat_activity_ext и в функциях аналитики производительности.
В HTML-отчетах Performance Insights на основе значения wait_event_start формируются агрегированные показатели длительности ожиданий Durations (min, max, med) secs, которые носят оценочный характер.
Ниже показано, как выглядит работа функциональности в различных интерфейсах СУБД Pangolin.
Включение сбора времени начала ожиданий с помощью параметра monitor_wait_event_start:

Получение значения wait_event_start через системную функцию:

Получение значения wait_event_start через представление pg_stat_activity_ext:

Использование поля wait_event_start в Performance Insights и HTML-отчете:

Сохранение данных в памяти
Полученные записи сохраняются в shared memory.
В сохраняемых в памяти срезах активности фиксируется поле wait_event_start. При включенном параметре monitor_wait_event_start поле заполняется значением времени начала текущего события ожидания, зафиксированным в момент сбора данных, при его наличии. При выключенном параметре поле присутствует в срезах, но имеет значение NULL.
Записи, у которых временная метка превышает интервал времени относительно текущего момента, сохраняются на диск в файл и удаляются из памяти.
Интервал времени в данном случае определяется периодом сбора данных умноженным на интервал хранения в памяти (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 относятся: