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

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

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

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

PostgreSQL Error 53400: configuration_limit_exceeded — диагностика лимитов

Обновлено: 25.08.2026 · Официальная документация ↗
  • Ошибка: ERROR: out of shared memory (SQLSTATE 53400). Detail: You might need to increase "max_locks_per_transaction".
  • Сбои при выполнении массивных DDL операций или миграций структуры метаданных конфигураций 1С.
  • Ошибки при попытке захвата предикатных блокировок в транзакциях уровня Serializable.

1. Анализ ошибки переполнения таблицы блокировок

PostgreSQL хранит разделяемую таблицу блокировок в shared memory. Размер таблицы фиксируется при старте сервера по формуле: (max_locks_per_transaction) * (max_connections + max_prepared_transactions).

2. Увеличение max_locks_per_transaction в postgresql.conf

-- Для крупных баз 1С с десятками тысяч таблиц увеличьте параметр:
ALTER SYSTEM SET max_locks_per_transaction = 256; -- По умолчанию 64
-- Требуется перезапуск службы PostgreSQL

3. Увеличение лимита предикатных блокировок (для SSI)

Если используется изоляция Serializable, увеличьте:

ALTER SYSTEM SET max_pred_locks_per_transaction = 128;
ALTER SYSTEM SET max_pred_locks_per_page = 4;

4. Перезапуск сервиса СУБД

systemctl restart postgresql
💡 Практика специалистов: Для высоконагруженных инсталляций 1С:Предприятие на PostgreSQL мы рекомендуем выставлять max_locks_per_transaction = 256 или 512 сразу на этапе развертывания сервера.

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

Почему ошибка out of shared memory указывает на configuration_limit_exceeded (53400)?

Потому что пул памяти под блокировки аллоцируется статически при запуске экземпляра. При открытии огромного количества таблиц в одной транзакции пул переполняется.

Влияет ли обновление конфигурации 1С на появление ошибки 53400?

Да, при реструктуризации сотен таблиц и индексов в одной неделимой транзакции платформа 1С открывает колоссальное количество lock-объектов, исчерпывая лимит.

Сколько оперативной памяти отнимает увеличение max_locks_per_transaction?

Сравнительно немного — увеличение параметра со 64 до 256 потребует всего несколько десятков мегабайт в shared memory.

Требуется ли перезагрузка сервера при изменении max_locks_per_transaction?

Да, этот параметр относится к статическим (postmaster) и не может быть применен через pg_reload_conf().

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