ELMA365 On-Premises > Дополнительно > Обслуживание ELMA365 / Диагностика производительности PostgreSQL в Yandex Cloud

Диагностика производительности PostgreSQL в Yandex Cloud

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

Мониторинг

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

Для просмотра графиков хоста перейдите в раздел Хосты > Мониторинг в интерфейсе Yandex Cloud:

yandex-cloud-postgresql-performance-diagnostics-1

Графики кластера расположены в разделе Мониторинг:

yandex-cloud-postgresql-performance-diagnostics-2

Часто проблемы производительности сопровождаются ростом числа подключений. Поэтому проверьте график Total pooler connections. При замедлении производительности количество пулов соединений резко вырастет, потому что приложения будут пытаться выполнить весь объём работ, создавая параллельные пулы.

Анализ логов

Чтобы найти проблемы в базе данных, используйте раздел Логи Yandex Cloud.

Для сбора логов медленных запросов в настройках кластера в поле Shared preload libraries выберите и включите модуль auto_explain, а также настройте параметры:

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

В логах обратите внимание на ошибки:

  • statement duration — медленные запросы;
  • query plans — планы запросов.

Диагностика производительности

Чтобы провести диагностику:

  • в настройках пользователя в поле Grants повысьте уровень прав до mdb_admin;
  • в настройках базы данных включите расширения.

pg_stat_statements ##модуль позволяет собирать статистику о выполненных SQL-запросах, включая их текст, время выполнения и количество вызовов
pg_stat_kcache ##модуль позволяет мониторить состояние кэша операционной системы, используемого PostgreSQL

В разделе Диагностика производительности интерфейса Yandex Cloud представлены следующие сведения:

  • графическое отображение данных число выполнений между интервалами сбора, время выполнения запроса, число строк результата запроса, информация об использовании буферов, время на операции ввода-вывода и т. д.;

yandex-cloud-postgresql-performance-diagnostics-4

  • текст плана запроса;

yandex-cloud-postgresql-performance-diagnostics-5

  • визуализация плана.

yandex-cloud-postgresql-performance-diagnostics-6