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

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

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

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

PostgreSQL Error 53200: out_of_memory — расчет work_mem и shared_buffers

Обновлено: 25.08.2026 · Официальная документация ↗
  • Ошибка в клиенте: ERROR: out of memory (SQLSTATE 53200). Detail: Failed on request of size ...
  • Падение параллельных аналитических запросов с множественными узлами сортировки/хеширования.
  • Высокая утилизация SWAP и риск вызова Linux OOM Killer.

1. Анализ текущей конфигурации памяти

SHOW shared_buffers;
SHOW work_mem;
SHOW maintenance_work_mem;
SHOW max_connections;

2. Правильный расчет work_mem

Память work_mem выделяется на каждую операцию сортировки/соединения внутри запроса, а не на весь процесс. При сложном плане один запрос может использовать work_mem * 5.

-- Формула безопасного work_mem:
-- work_mem = (Доступная RAM - shared_buffers) / (max_connections * 3)

-- Установка адекватного лимита
ALTER SYSTEM SET work_mem = '32MB';
SELECT pg_reload_conf();

3. Проверка настроек Linux Huge Pages

cat /proc/meminfo | grep -i HugePages

Использование Transparent Huge Pages (THP) приводит к фрагментации памяти. Отключите THP в ОС:

echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag
💡 Практика специалистов: Для серверов 1С с сотнями пользователей никогда не ставьте глобальный work_mem больше 64MB. Если отчетам не хватает памяти, используйте временный SET LOCAL work_mem внутри конкретной процедуры.

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

Почему возникает ошибка 53200 при наличии свободной физической памяти?

PostgreSQL отслеживает внутренние контексты аллокаций памяти (AllocSet). Ошибка генерируется, когда запрос упирается в 32-битный лимит одного блока памяти или системный ulimit процесса.

Какой процент RAM выделять под shared_buffers для баз 1С?

Рекомендуемый объем составляет 25% от общей оперативной памяти сервера (для серверов с RAM > 64GB обычно от 16GB до 32GB).

Можно ли задавать большой work_mem только для одного пользователя?

Да: ALTER USER report_user SET work_mem = '512MB'; позволит выделить память только для тяжелых отчетов без риска для остальных сессий.

Как влияют настройки sysctl vm.overcommit_memory на ошибку 53200?

При vm.overcommit_memory = 2 ядро Linux строго запрещает выделение памяти сверх установленного лимита (RAM + Swap * ratio), что предотвращает внезапный OOM Killer.

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