Как решить проблему «Недостаточно памяти» при обновлении 1С на Windows Server 2003?

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

При обновлении тяжелых современных конфигураций (таких как 1С:Бухгалтерия предприятия 3.0) на старых операционных системах или 32-разрядных серверах системные администраторы часто сталкиваются с критической ошибкой: «Недостаточно памяти», после чего Конфигуратор аварийно закрывается. Давайте подробно разберем, почему возникает эта проблема, и рассмотрим практические методы ее решения.

Почему возникает ошибка нехватки памяти?

Современные конфигурации 1С на управляемых формах содержат колоссальное количество метаданных и сложных взаимосвязей. В процессе обновления (особенно при сравнении и объединении конфигураций) программа выполняет ресурсоемкие математические расчеты структуры базы данных.

В 32-разрядных операционных системах Windows (а также для любых 32-битных процессов) адресное пространство одного процесса жестко ограничено 2 ГБ. Как только Конфигуратор (процесс 1cv8.exe) или рабочий процесс сервера 1С (rphost.exe) пытается потребовать больше этого лимита, операционная система принудительно завершает его работу. Даже если на вашем физическом сервере установлено 16 ГБ или 32 ГБ оперативной памяти, один 32-битный процесс физически не сможет использовать более 2 ГБ без специальных настроек.

Проанализируем эффективные методы обхода этого ограничения по шагам.

Метод 1. Настройка адресного пространства памяти в Windows Server 2003 (ключ /3GB)

На интернет-форумах часто советуют использовать утилиту bcdedit /set increaseuserva. Однако важно указать на критическую ошибку этого совета применительно к старым системам: в Windows Server 2003 утилиты bcdedit не существует (она появилась только в Windows Vista и Windows Server 2008).

В Windows Server 2003 ограничение в 2 ГБ для одного процесса обходится путем ручного редактирования файла конфигурации загрузки boot.ini, который находится в корне системного диска (обычно C:\boot.ini). Мы можем перераспределить оперативную память, выделив процессам пользователей до 3 ГБ адресного пространства вместо стандартных 2 ГБ.

Выполним следующие действия по шагам:

  1. Откроем свойства системного диска и снимем атрибуты «Только для чтения» и «Скрытый» у файла boot.ini в корневом каталоге.
  2. Откроем файл boot.ini с помощью Блокнота.
  3. Найдем строку запуска вашей операционной системы в секции [operating systems].
  4. В конец этой строки допишем параметры /3GB и /userva=2900. Параметр /userva (рекомендуется устанавливать в диапазоне от 2900 до 3030) позволяет более гибко настроить распределение памяти, чтобы операционной системе гарантированно хватило ресурсов для стабильной работы ядра.

Рассмотрим пример того, как должна выглядеть строка в файле boot.ini после внесения изменений:


[boot loader]
timeout=30
default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Windows Server 2003, Enterprise" /fastdetect /3GB /userva=2900

Сохраним файл, вернем ему исходные системные атрибуты и перезагрузим сервер. После перезагрузки процесс обновления 1С получит доступ почти к 3 ГБ памяти, что во многих случаях позволит успешно завершить обновление.

Метод 2. Использование 64-разрядного клиента 1С (Конфигуратора)

Выясним еще одну важную деталь. Даже если ваш сервер работает под управлением 64-битной операционной системы и на нем развернут 64-битный сервер 1С:Предприятия, вы все равно можете получить ошибку нехватки памяти. Это происходит потому, что обновление часто запускается через 32-разрядный Конфигуратор.

По умолчанию ярлыки запуска 1С ведут в папку 32-битного клиента (C:\Program Files (x86)\1cv8\...). Чтобы решить проблему, запустим процесс обновления принудительно через 64-разрядный исполняемый файл Конфигуратора, который расположен в папке C:\Program Files\1cv8\... (если на компьютере администратора установлена 64-битная версия платформы).

Метод 3. Обновление базы данных через файловую копию (Рекомендуемый обходной путь)

Если у вас нет возможности переустановить серверную ОС на 64-разрядную версию или приобрести дорогостоящую лицензию на 64-битный сервер 1С прямо сейчас, существует надежный административный "лайфхак". Мы можем перенести тяжелую процедуру сравнения метаданных на обычный современный рабочий компьютер.

Разберем этот алгоритм подробно по шагам:

  1. Создание резервной копии: В Конфигураторе рабочей базы на сервере зайдем в меню Администрирование — Выгрузить информационную базу... и сохраним файл резервной копии (с расширением .dt).
  2. Перенос на рабочий ПК: Скопируем этот файл на любой современный рабочий компьютер администратора с установленной 64-разрядной Windows и достаточным объемом ОЗУ (от 8 ГБ и выше).
  3. Развертывание файловой базы: Установим на этом компьютере 64-разрядную версию платформы 1С, создадим пустую файловую базу и загрузим в нее наш файл .dt.
  4. Обновление конфигурации: Запустим 64-разрядный Конфигуратор на локальном ПК и штатно обновим конфигурацию до нужного релиза. На современном компьютере этот процесс пройдет быстро и гарантированно не упрется в лимиты памяти.
  5. Выгрузка обновленной структуры: После завершения обновления перейдем в меню Конфигурация — Сохранить конфигурацию в файл... и выгрузим файл конфигурации (с расширением .cf).
  6. Применение изменений на сервере: Вернемся на старый сервер Windows Server 2003. Запустим Конфигуратор рабочей базы в монопольном режиме. Перейдем в меню Конфигурация — Загрузить конфигурацию из файла... и выберем наш файл .cf. Затем нажмем клавишу F7 для обновления конфигурации базы данных.

Этот метод чрезвычайно эффективен, так как серверу 1С больше не требуется выполнять сложнейшие операции сравнения конфигурации поставщика с основной конфигурацией — вся эта работа уже проделана на вашем рабочем компьютере, а сервер лишь применяет готовые изменения к таблицам базы данных, что требует в разы меньше оперативной памяти.

Метод 4. Очистка кэша, тестирование базы и оптимизация ресурсов сервера

Иногда ошибка нехватки памяти вызвана не только объективной тяжестью обновления, но и внутренними ошибками в базе данных или накопленным «мусором» в оперативной памяти сервера. Перед запуском обновления выполним несколько важных регламентных процедур:

Используя предложенные методики, мы сможем успешно обновить конфигурацию 1С даже в условиях жестких ограничений устаревшей операционной системы Windows Server 2003.

← На главную