Центр Диагностики & База Системных Ошибок

Решения для Windows Server, Active Directory, 1С, СУБД, Linux, Cisco, MikroTik и IP-телефонии.

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

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().