Определение причины снижения производительности СУБД с использованием pg_hazel и pgpro_pwr
Взято с основного технического канала Postgres DBA ( возможны правки и дополнения в исходной статье ).
Задача
Определить причину аномальной утилизации CPU и снижения производительности СУБД
Симптомы
Аномальная утилизация CPU сервера СУБД
Наблюдаемая проблема
Снижение операционной скорости СУБД
Корреляционный анализ
Отрицательная корреляция между снижением операционной скорости и ростом ожиданий - отсутствует.
Подробнее об индикаторе
Отчеты pgpro_pwr
G.3.11.2. Load distribution (Распределение нагрузки)
Этот раздел отчёта pgpro_pwr основан на представлении pgpro_stats_totals расширения pgpro_stats, если оно было доступно в течение отчётного интервала. Каждая таблица в данном разделе предоставляет данные за отчётный интервал о распределении нагрузки для определённого типа объектов, для которых собирается агрегированная статистика, например, баз данных, приложений, узлов или пользователей. Каждая таблица содержит по одной строке для каждого из ресурсов (таких, как общее время или общее число записанных разделяемых блоков), где распределение нагрузки показано на графике в виде линейчатой диаграммы с накоплением для объектов с наибольшей нагрузкой по этому ресурсу. Если область диаграммы, соответствующая объекту, слишком узка для включения заголовков, наведите указатель на эту область, чтобы получить подсказку с заголовком, значением и процентом. Таблицы «Load distribution among heavily loaded databases», «Load distribution among heavily loaded applications», «Load distribution among heavily loaded hosts» и «Load distribution among heavily loaded users» показывают распределение нагрузки для соответствующих объектов.
Статистика утилизации CPU
G.3.11.4.1. rusage statistics (Статистика использования ресурсов)
Этот раздел добавляется в отчёт, только если в отчётном интервале было доступно расширение pgpro_stats или pg_stat_kcache.
Таблица отчёта «Top SQL by system and user time» показывает запросы с наибольшей суммой значений полей user_time и system_time в представлении pg_stat_kcache или pgpro_stats_totals.
Наиболее длительные SQL
Таблица отчёта «Top SQL by execution time» показывает запросы с наибольшей длительностью выполнения, определяемой по значению поля total_time представления pgpro_stats_statements или pg_stat_statements.
Причина инцидента и проблемный запрос
Причина аномальной утилизации CPU и снижения операционной скорости СУБД является массовый вызов хранимой функции, требующей для выполнения высоких вычислительных ресурсов.