Производительность базы данных — это не то, что вы измеряете, когда приходят жалобы. Это то, что вы предвосхищаете, чтобы жалоб не было вовсе.
Производительность базы данных — это не то, что вы измеряете, когда приходят жалобы. Это то, что вы предвосхищаете, чтобы жалоб не было вовсе.

Глоссарий терминов

Статистический анализ производительности СУБД PostgreSQL

GitHub - Комплекс pg_expecto для статистического анализа производительности и нагрузочного тестирования СУБД PostgreSQL

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

Формулировка задачи:

Разработка специализированных конфигурационных файлов метрик для оценки производительности систем управления базами данных (СУБД) с использованием инструментария pg_expecto. Результаты работы предназначены для интеграции в системы мониторинга и обеспечения основ для реализации механизмов проактивного анализа производительности СУБД.

Предисловие

Реактивный и проактивный мониторинг: rinace — ЖЖ

Графики изменения операционной скорости и ожиданий СУБД в период, предшествующий инциденту.

График изменения операционной скорости. Красная линия - линия регрессии.
График изменения операционной скорости. Красная линия - линия регрессии.
График изменения ожиданий СУБД. Красная линия - линия регрессии.
График изменения ожиданий СУБД. Красная линия - линия регрессии.

Условие начала инцидента :

Если угол наклона линии регрессии операционной скорости < 0 ,

И

угол наклона линии регрессии ожиданий > 0

ТО

Создать оповещение мониторинга "Инцидент деградации производительности".

В качестве значения для приоритета инцидента, используется модуль коэффициента корреляции :

  • < 0.7 : низкий уровень (Приоритет 4). Значение индикатора = -50

  • >= 0.7 : высокий уровень (Приоритет 3). Значение индикатора = -100

Расчет индикатора снижения производительности СУБД

Угол наклона линии графика

ATAN(REGR_SLOPE(Y, X)) * 180 / PI()

Y - выборка значений(операционная скорость, ожидания СУБД) за заданный период
X - точки наблюдения (номер минуты)

Коэффициент корреляции между операционной скоростью и ожиданиями СУБД

COALESCE( corr( speed , waitings ) , 0 ) AS correlation_value

speed - выборка значений операционной скорости за заданный период
waitings - выборка значений ожиданий СУБД за заданный период

Дополнительная информация:

Операционная скорость, ожидания , корреляция, линия регрессии

Статистический анализ производительности СУБД PostgreSQL | Postgres DBA | Дзен

Индикатор снижения производительности СУБД

"Индикатор снижения скорости" как сигнал для начала корреляционного анализа ожиданий СУБД. | Postgres DBA | Дзен

Реализация системы мониторинга производительности СУБД на основе расширения pg_expecto

  1. Определен перечень метрик для оценки производительности СУБД, включающий показатели операционной скорости обработки запросов и ожиданий СУБД(wait_event_type).

  2. Получаемые метрики агрегируются и экспортируются в текстовые файлы в формате, обеспечивающем их последующий сбор системой мониторинга Zabbix.

  3. Для проактивного выявления аномалий производительности реализован алгоритм регрессионного анализа. На основе исторических данных производится ра��чет углового коэффициента линейного тренда для метрик операционной скорости и ожиданий СУБД. Результирующее значение, характеризующее динамику изменения производительности, сохраняется в качестве интегрального индикатора деградации.

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

Файлы для формирования метрик мониторинга:

  • /tmp/pg_expecto_speed.txt : Текущее значение операционной скорости.

  • /tmp/pg_expecto_waitings.txt : Текущее значение ожиданий СУБД.

  • /tmp/pg_expecto_indicator.txt : Текущее значение индикатора деградации производительности СУБД.

Результат: мониторинг производительности СУБД в Zabbix

Дашборд Zabbix
Дашборд Zabbix

Пример использования индикатора снижения производительности

PG_HAZEL : Анализ инцидента производительности СУБД PostgreSQL. | Postgres DBA | Дзен