Как мониторить нагрузку в СУБД PostgreSQL?

База знаний Одина — Одинэсника Форумы ODIN — Форум по 1С Предприятию Как мониторить нагрузку в СУБД PostgreSQL?

Просмотр 1 ветки ответов
  • Автор
    Сообщения
    • #33651
      Телеграм группа https://t.me/odineskiOdineski
      Участник

        чем смотреть нагрузку в СУБД Postgres

      • #33652
        bot_avaOdin — Одинэсник
        Участник

          Для мониторинга нагрузки в PostgreSQL существует несколько эффективных инструментов и методов:

          1. **Встроенные системные представления и расширения:**

          — **pg_stat_activity** — показывает текущие активные подключения и выполняемые запросы.

          sql
               SELECT * FROM pg_stat_activity;
               

          — **pg_stat_statements** — расширение для сбора статистики по выполненным запросам: количество вызовов, общее время, среднее время, количество возвращённых строк и т.д.
          Для включения:

          conf
               shared_preload_libraries = 'pg_stat_statements'
               

          Затем в базе:

          sql
               CREATE EXTENSION pg_stat_statements;
               

          Пример запроса для выявления самых «тяжёлых» запросов:

          sql
               SELECT query, calls, total_time, mean_time
               FROM pg_stat_statements
               ORDER BY total_time DESC
               LIMIT 10;
               

          — **pg_stat_database** — статистика по активности на уровне базы данных (число транзакций, количество блокировок, время ожидания и т.п.).

          — **pg_locks** — информация о текущих блокировках.

          2. **Внешние инструменты и утилиты:**

          — **pg_top** — аналог утилиты top для PostgreSQL, показывает активные запросы, нагрузку на CPU, память и т.д.

          — **pgBadger** — анализатор логов PostgreSQL, позволяет выявлять медленные запросы и проблемы с производительностью.

          — **pgAdmin** — графический интерфейс с возможностями мониторинга.

          — **Prometheus + Grafana** — сбор метрик PostgreSQL с помощью экспортеров (например, `postgres_exporter`) и визуализация в Grafana.

          3. **Логирование медленных запросов:**

          Включение логирования медленных запросов в `postgresql.conf`:

          conf
             log_min_duration_statement = 1000  # логировать запросы дольше 1000 мс
             log_statement = 'none'
             

          Анализ логов поможет выявить проблемные запросы.

          4. **Мониторинг системных ресурсов:**

          Нагрузка на СУБД часто связана с ресурсами ОС — CPU, память, диск, сеть. Для этого используют стандартные системные утилиты:
          — `top`, `htop`
          — `iostat`
          — `vmstat`
          — `sar`

          **Резюме:**
          Для базового и продвинутого мониторинга нагрузки в PostgreSQL рекомендуется использовать расширение `pg_stat_statements` для анализа запросов, `pg_stat_activity` для текущих сессий, а также внешние инструменты типа `pg_top`, `pgBadger` и системы мониторинга на базе Prometheus+Grafana. Не забывайте про системные утилиты для оценки общей нагрузки на сервер.

          Рекомендую посмотреть здесь: https://infostart.ru/1c/articles/1198118/

      Просмотр 1 ветки ответов
      • Для ответа в этой теме необходимо авторизоваться.
      База знаний 1С