Как исправить ошибку «Сервер баз данных не обнаружен» при работе 1С с PostgreSQL?

Системный администратор 1С v8.3 (Обычные формы) 1С:Комплексная автоматизация IT и автоматизация бизнеса
← На главную

В процессе работы с платформой «1С:Предприятие 8.3» в связке с СУБД PostgreSQL пользователи могут сталкиваться со внезапным завершением сеансов и сообщением системы: «Сервер баз данных не обнаружен». При этом после повторного входа в 1С работа продолжается в штатном режиме до следующего сбоя. Проанализируем причины такого поведения, разберем записи в логах PostgreSQL и рассмотрим пошаговые способы стабилизации системы.

Анализ причин возникновения ошибки в логах PostgreSQL

При возникновении описанного сбоя в журнале регистрации PostgreSQL (файлах логов) чаще всего фиксируются следующие предупреждения и ошибки:


WARNING: worker took too long to start; canceled
WARNING: autovacuum worker started without a worker entry
LOG: could not receive data from client: An established connection was aborted by the software in your host machine.

Выясним, что означают эти записи и какова механика их появления:

  1. Особенности работы PostgreSQL в ОС Windows: В операционных системах семейств Windows отсутствует нативная функция Unix-систем fork(). Для запуска рабочих процессов PostgreSQL эмулирует этот механизм путем создания новых процессов и повторного подключения к общей памяти (shared memory). При сильной фрагментации RAM, высоком дисковом вводе-выводе или недостатке виртуальной памяти выделение ресурсов задерживается. Главный процесс СУБД (postmaster), не получив отклик за отведенное время, отменяет запуск рабочего процесса со статусом WARNING: worker took too long to start; canceled. Если процесс все же успевает инициализироваться после отмены, возникает предупреждение WARNING: autovacuum worker started without a worker entry.
  2. Аварийный перезапуск процессов (Crash Recovery): Когда один из фоновых процессов падает из-за нехватки памяти в Windows, главный процесс postmaster принудительно завершает все остальные активные соединения для сохранения целостности данных в общей памяти. В этот момент фоновые и рабочие процессы сервера 1С мгновенно теряют сокетное соединение с СУБД, фиксируя ошибку could not receive data from client..., а пользователи получают аварийный вылет с сообщением «Сервер баз данных не обнаружен».

Оптимизация параметров конфигурации PostgreSQL (postgresql.conf)

Рассмотрим ключевые параметры конфигурационного файла postgresql.conf, изменение которых позволяет устранить нехватку ресурсов и стабилизировать работу СУБД.

1. Корректировка параметра work_mem

Параметр work_mem определяет объем памяти, выделяемый для каждой операции сортировки и хеширования внутри одного запроса. Распространенная ошибка — установка слишком большого значения (например, 500 MB).

Учтем, что один сложных запрос 1С может содержать несколько операций сортировки, а при десятках параллельных сеансов суммарное потребление памяти мгновенно истощает ресурсы сервера, вызывая аварийный отстрел процессов ОС. Для баз 1С рекомендуется устанавливать work_mem в пределах от 32MB до 64MB.

2. Настройка параметра shared_buffers

Параметр shared_buffers задает объем оперативной памяти, выделяемой PostgreSQL под буферный кэш данных. Если значение слишком мало, СУБД постоянно обращается к дисковому накопителю, создавая критическую нагрузку на ввод-вывод и вызывая таймауты при старте рабочих процессов (workers).

Для выделенного сервера базы данных оптимальное значение shared_buffers составляет порядка 25% от общего объема ОЗУ сервера (например, 8 GB при 32 GB RAM на сервере).

3. Настройка параметров автовакуума и maintenance_work_mem

Служба autovacuum отвечает за очистку устаревших версий строк. Чтобы процедуры очистки не блокировали работу основной базы и не перегружали диски:

  1. Установим параметр maintenance_work_mem на уровень 512MB – 1024MB. Это позволит автовакууму и операциям индексации эффективно обрабатывать большие массивы данных.
  2. Проверим число рабочих процессов autovacuum_max_workers (обычно достаточно значения от 3 до 4).

4. Сглаживание контрольных точек (Checkpoints)

Для предотвращения «просадок» производительности во время сброса грязных страниц из памяти на диск применим параметры сглаживания ввода-вывода:


checkpoint_completion_target = 0.9
max_wal_size = 4GB

Настройка сетевого взаимодействия и системного окружения

Разберем дополнительные системные факторы, приводящие к спонтанным разрывам TCP-соединений между сервером 1С и PostgreSQL.

  1. Использование IP-адресов вместо имен хостов: При настройке подключения кластера 1С к PostgreSQL и указании параметров базы данных рекомендуется прописывать статический IP-адрес (или 127.0.0.1, если СУБД и сервер 1С находятся на одном хосте). Это исключит сбои при задержках разрешения имен через DNS или DHCP.
  2. Влияние антивирусного ПО: Антивирусы на серверной ОС нередко блокируют или сканируют временные файлы и разделяемую память СУБД. Необходимо либо полностью удалить антивирус с сервера баз данных, либо внести всю директорию данных PostgreSQL (каталог кластера data) и исполняемые файлы СУБД в жесткие исключения сканирования.
  3. Обновление сборки PostgreSQL: Убедимся, что используется актуальная специализированная сборка PostgreSQL для 1С (например, от Postgres Professional). В специализированных дистрибутивах внесены исправления в части работы с типами данных 1С и предустановлены оптимальные параметры конфигурации.

Настройка параметров операционной системы Windows Server

Проанализируем специфические настройки ОС Windows Server для предотвращения проблем с выделением памяти и сетевыми сокетами:

  1. Файл подкачки (Pagefile): При работе с PostgreSQL на Windows нехватка виртуальной памяти приводит к неисправимым ошибкам инициализации процессов. Зададим фиксированный размер файла подкачки (например, 1.5 объема RAM), не положившись на автоматический выбор системы.
  2. Отключение оптимизаций сетевых адаптеров: На сетевой карте сервера рекомендуется отключить функции аппаратной разгрузки TCP (TCP Chimney Offload, Receive Side Scaling - RSS, Large Send Offload - LSO), которые в Windows Server могут вызывать спонтанные разрывы установленных соединений.

Альтернативные архитектурные решения

Если оптимизация параметров под управлением Windows Server не приносит абсолютной стабильности под высокой нагрузкой, рассмотрим следующие решения:

← На главную