Жила себе и здравствовала связка 1C + PostgreSQL, которая была описана вот в этой статье, но в один прекрасный момент начались жалобы от пользователей 1С-ки, некоторые даже со скриншотами:
Все жаловались на одну зловещую ошибку — при создании базы пишет бяку:
FATAL: sorry, too many clients already
Суть проблемы в принципе понятна с описания ошибки — превышено максимальное количество максимальных подключений.
Лечится легко и просто.
Заглянем в файлик конфигурации постгреса и найдем параметр:
max_connections
По умолчанию его значение = 50, если не ошибаюсь. Установим достаточное количество, можно наугад (я поставил 200).
Но это еще не все. Строчкой ниже в моем конфиге было примечание:
# Note: Increasing max_connections costs ~400 bytes of shared memory per # connection slot, plus lock space (see max_locks_per_transaction). You might # also need to raise shared_buffers to support more connections.
Поэтому, пошли искать параметр:
shared_buffers
Рядом также был комментарий о том, как рассчитывается минимальное количество шаренной памяти:
# min 128kB or max_connections*16kB # (change requires restart)
Я выставил = 128MB с запасом, все-таки не 90-е годы, память дешевая ;)
Для того, что бы изменения вступили в силу, требуется перезапуск сервера PostgreSQL.
ВАЖНО: Если в текущий момент сервер 1C запущен, и более того, если на нем кто-то работает с базами, перезапускать PostgreSQL сервер категорически не рекомендуется, т.к. это может привески к потере данных и повреждению самой базы PostgreSQL (горький опыт). Более разумно будет выгнать пользователей из 1С-ки, остановить 1С сервер (потушить службу), и только тогда перезагрузить сервер PostgreSQL.
Это избавит вас не только от матюков крикливых бухгалтеров и программистов, за внезапное слетание сессии 1С, но также избавит от гемороя с восстановлением базы данных, на которое при значительных объемах может уйти достаточно много времени.
Удачи в траблшутинге ;)
Благодарю за полезную информацию!