Справочник системных ошибок и решений

Windows Server, Active Directory, 1С:Предприятие, СУБД, Linux, Cisco, MikroTik, Asterisk.

⚠️ Важная информация Все материалы, инструкции, команды и скрипты на сайте предоставлены исключительно в ознакомительных целях. Их применение может повлиять на работу операционной системы, программного обеспечения, баз данных, сетевого оборудования и других компонентов инфраструктуры. Перед выполнением действий создайте резервную копию и по возможности протестируйте изменения в безопасной среде. Пользователь самостоятельно оценивает риски и несет ответственность за результат. При отсутствии необходимых знаний обратитесь к квалифицированному ИТ-специалисту.

PERF_1C_DB_POOL_TUNING 1С:Предприятие и СУБД

Гайд 1С: Настройка пула соединений СУБД в кластере серверов 1С

Обновлено: 26.08.2026 · Официальная документация ↗
  • Ошибка Превышено максимальное количество соединений с СУБД (Too many connections).
  • Высокие накладные расходы времени на постоянное открытие и закрытие TCP-сессий с сервером базы данных.
  • Всплески задержек при старте тяжелых фоновых заданий или регламентных процедур.
  • Зависание соединений в состоянии idle in transaction на стороне PostgreSQL.

1. Архитектура и параметры пула соединений 1С

Кластер серверов 1С (процессы rphost) удерживает постоянный пул соединений к СУБД для повторного использования пользовательскими сессиями. Тонкая настройка осуществляется через параметры информационной базы в консоли администрирования или свойства кластера:

  • Количество соединений на процесс: Регулируется распределением рабочих процессов и числом информационных баз на кластер.
  • Время жизни неиспользуемого соединения: Очистка соединений, находящихся в спящем режиме.

2. Настройка параметров PostgreSQL под пул 1С

В файле postgresql.conf установите согласованные лимиты соединений:

# Максимальное число физических соединений от всех rphost + админка
max_connections = 500

# Таймаут удержания неактивных транзакций (защита от зависших сессий 1С)
idle_in_transaction_session_timeout = 600000 # 10 минут

# Контроль сетевого канала TCP
tcp_keepalives_idle = 60
tcp_keepalives_interval = 10
tcp_keepalives_count = 5

3. Тюнинг пула в MS SQL Server

В свойствах экземпляра SQL Server (Connections) проверьте значение Max number of concurrent connections (должно быть установлено в 0 — неограниченно, регулируется лицензиями и ресурсами).

💡 Практика специалистов: Для высоконагруженных систем настройте в свойствах информационной базы кластера 1С параметр 'Время засыпания пассивных сеансов' (1200 сек) и 'Время удаления пассивных сеансов' (86400 сек) для предотвращения удержания соединений ночными клиентами.

Частые вопросы (FAQ)

Почему нельзя ставить max_connections в PostgreSQL с большим запасом (например, 5000)?

Каждое подключение в PostgreSQL — это отдельный процесс ОС, потребляющий фиксированный объем RAM под структуры и снижающий эффективность работы планировщика ядра при обходе таблицы блокировок procArray.

Как рассчитывается оптимальное значение max_connections для 1С?

Формула: (Количество активных rphost * Пул на процесс [обычно 30-50]) + 30 технических соединений для фоновых служб и мониторинга.

Нужно ли использовать внешний PgBouncer перед 1С?

Нет. Платформа 1С:Предприятие реализует собственный высокоэффективный внутренний пул соединений в коде rphost. Использование PgBouncer в режиме transaction pool ломает работу временных таблиц 1С (#tt), а в режиме session pool не дает преимуществ.

Как принудительно сбросить подвисшие соединения к СУБД из консоли 1С?

В консоли администрирования кластера откройте ветку 'Информационные базы' -> 'Соединения', отсортируйте по времени простоя и удалите зависшие неактивные сеансы через контекстное меню.

Полезные материалы
Рекомендуем