
Для сглаживания данных используется медианное сглаживание:
Долгая скользящая: 1 час(красная линия).
Короткая скользящая: 10 минут(синяя линия).
Активные соединения и утилизация CPU: стандартные метрики Zabbix.
Как видно из графика - имеет место деградация производительности СУБД:
Количество активных сессий растет, но производительность падает
Утилизация CPU растет , но производительность падает
Ситуация, принципиально отличается от описанной в казалось бы похожем кейсе:
CPU Utilization = 100%. Это проблема СУБД? / Хабр (habr.com)
Поэтому и решаться данный инцидент будет по другому.
Использование статистического анализа
1.Выделение трендов на графике производительности
Выполняется тривиально, дополнительных инструментов не требуется.
13:00 - 13:28 : Горизонтальный тренд - высокая производительность
13:28 - 13:47 : Деградация производительности
13:57 - 14:05 : Горизонтальный тренд - низкая производительность. Нагрузка на СУБД уменьшилась.
13:00 - 13:28 : Горизонтальный тренд - высокая производительность
Статистические показатели производительности СУБД

Прямая корреляция между количество активных сессий и производительностью СУБД . Или другими словами - чем выше нагрузка на СУБД , тем выше производительность.
Статистические показатели ожиданий СУБД - корреляция ожиданий и производительности СУБД

Количество пользовательских запросов по которым имеются события ожидания СУБД - минимально.
13:28 - 13:47 : Деградация производительности
Статистические показатели производительности СУБД

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

Как видно из таблицы - количество ожиданий кардинально увеличилось. Явный признак - имеются серьезные проблемы с производительностью СУБД.
2.Определение наиболее значимой причины деградации производительности СУБД
Из Рис.4 видно, что наибольшая обратная корреляция между событиями ожидания и снижением производительности СУБД имеется для события LWLock / BufferMapping

Как видно - количество ожиданий менее чем за 20 минут - весьма существенно.
Итак, первый результат
Первой( но конечно не единственной) причиной деградации производительности СУБД в период 13:28 - 13:47 является - большое количество ожиданий LWLock / BufferMapping при выполнении пользовательских запросов.
2.1. Определение SQL запросов с наибольшим количеством ожиданий LWLock / BufferMapping
Чуть подробнее об ожидании
| Ожидание при связывании блока данных с буфером в пуле буферов. |
LWLock - buffer_mapping
This event occurs when a session is waiting to associate a data block with a buffer in the shared buffer pool.
Context
The shared buffer pool is an PostgreSQL memory area that holds all pages that are or were being used by processes. When a process needs a page, it reads the page into the shared buffer pool. The shared_buffers
parameter sets the shared buffer size and reserves a memory area to store the table and index pages. If you change this parameter, make sure to restart the database. For more information, see Shared Buffer Area.
The buffer_mapping
wait event occurs in the following scenarios:
A process searches the buffer table for a page and acquires a shared buffer mapping lock.
A process loads a page into the buffer pool and acquires an exclusive buffer mapping lock.
A process removes a page from the pool and acquires an exclusive buffer mapping lock.
LWLock - buffer_mapping | Redrock Postgres Documentation (rockdata.net)
3. Определение запросов с максимальным количество ожиданий

Далее, дело техники, используя утилиту pgpro_pwr по queryid, находим проблемный запрос за период 13:30 - 13:50(снимки pgpro_pwr формируются каждые 10 минут):
select
this_.id as id1_13_0_,
this_.application_name as applicat2_13_0_,
this_.assignment_snapshot as assignme3_13_0_,
this_.event_type as event_ty4_13_0_,
this_.start_date as start_da5_13_0_,
this_.parent_oid as parent_o6_13_0_,
this_.reason_data as reason_d7_13_0_,
this_.reason_key as reason_k8_13_0_,
this_.reason_ref as reason_r9_13_0_,
this_.reason_request_business_id as reason_10_13_0_,
this_.reason_request_id as reason_11_13_0_,
this_.requester_full_name as request12_13_0_,
this_.requester_oid as request13_13_0_,
this_.role as role14_13_0_,
this_.role_oid as role_oi15_13_0_,
this_.target_oid as target_16_13_0_,
this_.timestamp as timesta17_13_0_,
this_.end_date as end_dat18_13_0_,
this_.type as type19_13_0_
from
report_role_history_item this_
where
(this_.target_oid in ($1) or this_.parent_oid in ($2))
order by this_.timestamp desc limit $3
Запрос передается разработчикам , для анализа .
Дальнейшие события ожидания анализируются схожим образом. Если отсортировать таблицу Рис.4. по количеству пользовательских запросов(более 100) , то можно и нужно сформировать список проблемных запросов для передачи группе разработки на оптимизацию и доработку.

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