Почему pg_stat_activity не показывает запросы из 1С к PostgreSQL и как это исправить

При работе 1С на сервере PostgreSQL возникает типичная задача мониторинга выполняемых запросов. Часто администраторы используют представление pg_stat_activity для этой цели. Однако может возникнуть ситуация, когда запросы, отправляемые из клиентского приложения 1С, в этой статистике не отображаются, в то время как запросы из других инструментов (например, pgAdmin 4) видны. Проблема особенно характерна для сред, где и СУБД, и сервер 1С работают на одной физической машине.

Причины отсутствия запросов в статистике

Существует несколько распространенных причин, по которым активность 1С может не фиксироваться в pg_stat_activity:

  • Разные подключения к базам данных: Ваше подключение через инструмент администрирования (например, psql или pgAdmin) и рабочие процессы 1С могут использовать разные пользовательские сессии или подключаться к разным базам данных в кластере PostgreSQL. По умолчанию pg_stat_activity показывает активность только в текущей базе данных.
  • Использование пулов соединений (Connection Pooling): Сервер 1С часто использует механизм пула соединений для эффективного управления подключениями к БД. Запрос может выполняться очень быстро и завершаться до того, как вы успеете его увидеть в статистике.
  • Настройки отслеживания статистики: В PostgreSQL существуют параметры конфигурации, такие как track_activities, которые должны быть включены для сбора данных о выполняемых запросах.
  • Просмотр не той базы данных кластера: Если в кластере PostgreSQL несколько баз данных, а 1С работает с другой, отличной от той, к которой вы подключились для просмотра статистики, запросы видны не будут.

Пошаговое решение проблемы

Чтобы диагностировать и решить проблему, выполните следующие действия:

  1. Подключитесь к правильной базе данных: Убедитесь, что вы подключились к той же базе данных, которую использует 1С. Для просмотра активности во всем кластере подключитесь к базе данных postgres и используйте запрос:
    SELECT * FROM pg_stat_activity WHERE datname = 'Имя_Вашей_Базы_1С';
  2. Проверьте и включите сбор статистики: Убедитесь, что в файле конфигурации PostgreSQL (postgresql.conf) установлены параметры:
    • track_activities = on
    • track_activity_query_size (рекомендуется значение 2048 или более для захвата длинных запросов 1С)
    После изменения конфигурации перезагрузите сервер PostgreSQL.
  3. Используйте расширенный мониторинг: Для захвата быстрых запросов используйте специализированные расширения, такие как pg_stat_statements, которые агрегируют статистику по всем выполненным запросам, или настройте логирование медленных запросов через параметр log_min_duration_statement.
  4. Наблюдайте в реальном времени: Запустите запрос к pg_stat_activity в цикле или используйте команду \watch в psql (например, SELECT * FROM pg_stat_activity WHERE state = 'active' AND datname = 'Ваша_БД'; \watch 1), чтобы постоянно обновлять данные и увидеть кратковременные операции.

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