Как исправить ошибку СУБД \"out of memory for query result\" при выгрузке базы 1С из PostgreSQL?

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

При работе с базами данных 1С на платформе PostgreSQL администраторы нередко сталкиваются с критической ошибкой out of memory for query result в процессе выгрузки информационной базы в файл .dt через конфигуратор. Данная ошибка свидетельствует о том, что системе не хватает оперативной памяти для обработки результатов запроса, причем чаще всего это связано не с физическим отсутствием ресурсов, а с программными ограничениями архитектуры системы. Давайте разберем по шагам, как выявить причину и устранить эту проблему.

1. Проверка архитектуры сервера и ограничений 32-битных процессов

Одной из наиболее частых причин является использование 32-битной версии сервера 1С. В архитектуре Windows 32-битный процесс (в частности rphost) имеет жесткий лимит адресного пространства — до 3.5-4 ГБ оперативной памяти. При выполнении сложных запросов на выгрузку данных этот лимит быстро исчерпывается. Мы рекомендуем первым делом проверить, используете ли вы 32-битную версию платформы.

Решение: Переход на 64-битную версию сервера 1С позволяет рабочим процессам использовать весь доступный объем оперативной памяти, что снимает большинство подобных проблем при работе с объемными базами.

2. Настройка виртуальной памяти и файла подкачки

Часто ошибку вызывает некорректная настройка файла подкачки в Windows. Если на сервере установлено несколько дисков, и файл подкачки отключен или задан вручную как слишком маленький на диске, где расположены файлы базы данных, система может выдавать ошибку нехватки памяти.

Решение: Установите использование файла подкачки в параметрах системы в значение «По выбору системы». Убедитесь, что на дисках с базой данных достаточно свободного места для формирования временных файлов выгрузки.

3. Оптимизация настроек PostgreSQL

Иногда причина кроется в неэффективных планах выполнения запросов, которые выбирает оптимизатор PostgreSQL. В частности, использование алгоритма merge join может требовать аномально больших объемов памяти.

Действия по настройке postgresql.conf:

4. Управление количеством информационных баз на рабочий процесс

Если на одном сервере 1С запущено несколько информационных баз, они могут делить ресурсы одного процесса rphost. При выгрузке одной из баз происходит острая конкуренция за память.

Инструкция:

  1. Откройте «Консоль администрирования серверов 1С:Предприятия».
  2. Перейдите в свойства рабочего сервера.
  3. Найдите параметр «Количество ИБ на процесс».
  4. Установите значение 1. Это создаст отдельный процесс rphost для каждой базы, предотвращая их влияние друг на друга при выполнении ресурсоемких задач.

5. Альтернативные методы выгрузки при критических ошибках

Если ни один из вышеперечисленных методов не приводит к успеху, стоит рассмотреть обходные пути для получения резервной копии:

Заключение: Большинство проблем с out of memory при работе с PostgreSQL решается переходом на современные 64-битные сборки платформы 1С и PostgresPro. Не забывайте регулярно проводить обслуживание базы данных (analyze, vacuum, reindex), чтобы индексы оставались актуальными, а оптимизатор запросов работал корректно.

← На главную