﻿# Диагностика производительности PostgreSQL в Yandex Cloud

> [HTML Version](yandex-cloud-postgresql-performance-diagnostics.html)

Yandex Cloud предоставляет уникальное окружение для хостинга баз данных PostgreSQL со средствами мониторинга, логирования и диагностики производительности. В статье рассматриваются настройки Yandex Cloud.

## Мониторинг

Чтобы обнаружить проблемы, влияющие на производительность системы, проанализируйте графики хоста и кластера. Обратите внимание на аномалии в данных.

Для просмотра графиков хоста перейдите в раздел **Хосты > Мониторинг** в интерфейсе Yandex Cloud:

**(yandex-cloud-postgresql-performance-diagnostics-1.png)**

Графики кластера расположены в разделе **Мониторинг**:

**(yandex-cloud-postgresql-performance-diagnostics-2.png)**

Часто проблемы производительности сопровождаются ростом числа подключений. Поэтому проверьте график **Total pooler connections**. При замедлении производительности количество пулов соединений резко вырастет, потому что приложения будут пытаться выполнить весь объём работ, создавая параллельные пулы.

## Анализ логов

Чтобы найти проблемы в базе данных, используйте раздел **Логи** Yandex Cloud.

Для сбора логов медленных запросов в настройках кластера в поле **Shared preload libraries** выберите и включите модуль \[OBJECT\], а также настройте параметры:

````
auto\_explain.log\_min\_duration = 1000;  ##будут записываться запросы, выполняющиеся более 1000 миллисекунд  
auto\_explain.log\_analyze = true; ##будет записываться вывод команды EXPLAIN ANALYZE  
auto\_explain.log\_buffers = true; ##включение статистики об использовании буферов  
log\_min\_duration\_statement = 1000; ##журналирование запросов, выполняющихся более 1000 миллисекунд  
log\_min\_duration\_sample = 100; ##позволяет сделать выборку по продолжительности команд, которые выполнялись не менее чем определённое время.  
log\_statement\_sample\_rate = 0.5 ##определяет, какая доля команд с длительностью, достигшей log\_min\_duration\_sample, будет регистрироваться в журнале.

````
**(yandex-cloud-postgresql-performance-diagnostics-3.png)**

В логах обратите внимание на ошибки:

- **statement duration** — медленные запросы;

- **query plans** — планы запросов.

## Диагностика производительности

Чтобы провести диагностику:

- в настройках пользователя в поле **Grants** повысьте уровень прав до \[OBJECT\];

- в настройках базы данных включите расширения.

````
pg\_stat\_statements ##модуль позволяет собирать статистику о выполненных SQL-запросах, включая их текст, время выполнения и количество вызовов  
pg\_stat\_kcache ##модуль позволяет мониторить состояние кеша операционной системы, используемого PostgreSQL

````
В разделе **Диагностика производительности** интерфейса Yandex Cloud представлены следующие сведения:

- графическое отображение данных — число выполнений между интервалами сбора, время выполнения запроса, число строк результата запроса, информация об использовании буферов, время на операции ввода-вывода и т. д.;

**(yandex-cloud-postgresql-performance-diagnostics-4.png)**

- текст плана запроса;

**(yandex-cloud-postgresql-performance-diagnostics-5.png)**

- визуализация плана.

**(yandex-cloud-postgresql-performance-diagnostics-6.png)**