При увеличении нагрузки на сервер 1С пользователи часто сталкиваются с ошибкой «Недостаточно памяти на сервере». При этом на самом физическом сервере или виртуальной машине может оставаться много свободной оперативной памяти. Причина заключается в архитектурном ограничении 32-разрядного рабочего процесса 1С (rphost.exe), который не может адресовать более 2–3 ГБ оперативной памяти. Оптимальным решением этой проблемы является замена 32-разрядного сервера 1С (x86) на 64-разрядный (x64).
Рассмотрим подробно, как правильно выполнить миграцию службы сервера 1С с x86 на x64, сохранить список прописанных информационных баз и журнал регистрации, а также проанализируем подводные камни, которые могут возникнуть при таком переходе.
Главная задача при переходе — не потерять настройки кластера информационных баз и журнал регистрации. Сервер 1С хранит эти данные в каталоге srvinfo. По умолчанию 64-разрядный сервер создает собственный пустой каталог, поэтому при стандартной установке список баз в консоли администрирования может оказаться пустым.
Разберем по шагам безопасный способ переключения на 64-разрядную платформу с сохранением всех данных:
services.msc) и остановим службу «Агент сервера 1С:Предприятие 8.3». Убедимся через диспетчер задач, что все процессы rphost.exe, rmngr.exe и ragent.exe завершены.regedit и перейдем в ветку реестра:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services
1CV83Server и 1CV83_64Server). В параметре ImagePath 64-разрядной службы пропишем путь к существующему каталогу srvinfo, который использовался 32-разрядной службой. При необходимости добавим ключ -debug для включения режима отладки.Проанализируем ключевые моменты, на которые следует обратить внимание до начала работ, чтобы избежать простоя системы:
Для работы 64-разрядного сервера 1С требуется отдельная программная или аппаратная лицензия на 64-разрядный сервер (ПРОФ или КОРП). Лицензия, используемая для 32-разрядного сервера, не позволит запустить 64-разрядные процессы. Убедитесь в наличии подходящей лицензии перед началом процедуры.
64-разрядный рабочий процесс rphost.exe не может напрямую обращаться к 32-разрядным библиотекам DLL и COM-объектам (например, MSScriptControl.ScriptControl, CAPICOM или старым драйверам торгового оборудования). При попытке вызова такого объекта на стороне сервера возникнет ошибка «Класс не зарегистрирован».
Для решения этой проблемы необходимо либо обновить библиотеки до 64-битных версий, либо настроить их запуск через службу компонентов Windows (DCOM / COM+), создав новое серверное приложение в консоли comexp.msc для выполнения 32-битного кода в изолированном процессе dllhost.exe.
Если СУБД (например, MS SQL Server) располагается на отдельном сервере, на машине с сервером 1С должны быть обязательно установлены 64-разрядные клиентские компоненты СУБД (такие как MS SQL Server Native Client или Microsoft OLE DB Driver for SQL Server x64). 32-битные драйверы 64-разрядным сервером 1С не поддерживаются.
С переходом на x64 один процесс rphost.exe получает возможность использовать весь доступный объем физической оперативной памяти. Если в коде конфигурации присутствуют неоптимизированные запросы или утечки памяти, сервер 1С может занять всю память и вызвать сбой операционной системы. Чтобы предотвратить подобные ситуации, рекомендуется настроить ограничения в свойствах кластера 1С:
Переход сервера на 64-разрядную архитектуру не обязывает менять разрядность клиентов: 32-разрядные клиентские приложения 1С могут продолжать штатно работать с 64-разрядным сервером 1С:Предприятие.