При эксплуатации серверных решений 1С многие системные администраторы рано или поздно сталкиваются с проблемой ограничения адресного пространства 32-разрядных процессов. Основным симптомом является ошибка "Нехватка памяти", даже если физически на сервере установлены десятки гигабайт оперативной памяти. Это связано с тем, что один 32-битный рабочий процесс rphost не может адресовать более 2-4 ГБ памяти. Единственным эффективным решением в данной ситуации является переход на 64-разрядную версию сервера 1С:Предприятие.
В этой статье мы подробно разберем процесс миграции, проанализируем технические нюансы переноса настроек кластера и выясним, какие изменения потребуются на стороне пользователей.
Прежде чем приступать к техническим работам, разберем важнейший вопрос — лицензирование. Важно помнить, что лицензия на 32-разрядный сервер не дает права запускать 64-разрядную версию. Для 64-битного сервера требуется приобретение отдельной лицензии. Если вы используете программные ключи, убедитесь, что у вас есть пин-код именно для 64-разрядного сервера. При использовании аппаратных ключей серии HASP необходимо убедиться, что ключ поддерживает 64-битную архитектуру (как правило, это ключи серий Max или сетевые ключи).
Рекомендуем заранее скачать полный дистрибутив платформы соответствующей разрядности и сделать резервную копию каталога данных кластера (обычно это папка srvinfo).
Рассмотрим ситуацию, когда необходимо сохранить список информационных баз, пользователей и настройки кластера. Все эти данные хранятся в каталоге srvinfo. Основная сложность заключается в том, что при установке 64-битной версии инсталлятор создает новую службу с путями по умолчанию, которые могут отличаться от путей 32-битной версии.
Для корректного переноса настроек выполним следующие действия:
1C:Enterprise 8.3 Server Agent (32-разрядную).srvinfo. У 32-битной версии путь обычно: C:\Program Files (x86)\1cv8\srvinfo. У 64-битной по умолчанию: C:\Program Files\1cv8\srvinfo.Чтобы сервер «подхватил» старые базы, мы можем пойти двумя путями: физически скопировать содержимое старой папки в новую или изменить строку запуска службы в реестре. Разберем второй вариант как более элегантный. Откроем редактор реестра и перейдем по пути:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\1C:Enterprise 8.3 Server Agent (x86-64)
Найдем параметр ImagePath и скорректируем значение атрибута -d. Например:
"C:\Program Files\1cv8\8.3.23.1865\bin\ragent.exe" -srvc -agent -regport 1541 -port 1540 -range 1560:1591 -d "D:\1C_Data\srvinfo"
Важный совет: рекомендуется выносить папку srvinfo на отдельный быстрый диск, отличный от системного. Это повышает производительность и упрощает обслуживание системы при переустановке ОС.
Разберем вопрос, волнующий многих: нужно ли менять платформу у пользователей? Короткий ответ — нет, не обязательно. Клиентское приложение 1С (тонкий или толстый клиент) может быть 32-разрядным, даже если сервер работает в 64-разрядном режиме. Протоколы взаимодействия между ними совместимы, если совпадают номера релизов платформы.
Однако существуют ситуации, когда переход пользователей на 64-битный клиент целесообразен:
Посмотрим на ситуацию с оборудованием. Если вы переведете пользователей на 64-разрядные клиенты, вы можете столкнуться с тем, что сканеры штрих-кодов или фискальные регистраторы перестанут работать из-за отсутствия 64-битных драйверов (внешних компонент). Поэтому в большинстве случаев оптимально оставить пользователям 32-разрядный клиент.
Проанализируем критически важный технический аспект: работу с COM-объектами. Если ваша конфигурация 1С использует внешние библиотеки (например, для обмена с банками или специфическими драйверами), которые существуют только в 32-битном исполнении, они не смогут загрузиться в 64-битный процесс rphost напрямую.
Для решения этой проблемы мы можем использовать механизм "Службы компонентов" (COM+) в Windows:
Это позволит 64-битному серверу 1С взаимодействовать с 32-битной библиотекой через суррогатный процесс Windows.
Выясним, как изменится нагрузка на аппаратную часть. Следует учитывать, что 64-разрядные процессы используют указатели большего размера. На практике это означает, что потребление RAM сервером при том же количестве активных пользователей может вырасти на 20–30%. Это нормальное поведение системы.
Поскольку теперь процесс rphost практически не ограничен в объеме занимаемой памяти, крайне важно настроить параметры рабочего процесса в консоли администрирования 1С. Мы рекомендуем ограничить "Максимальный объем памяти рабочих процессов", чтобы предотвратить ситуацию, когда из-за некорректного кода одного отчета зависает весь сервер, потребляя всю доступную память физической машины.
Перевод сервера на 64-разрядную архитектуру — это правильный шаг для любой растущей базы данных. Процедура не требует переустановки самих баз данных в SQL, так как меняется только слой приложения.
Подведем итог действий:
x64.x64 платформу.srvinfo в реестре или копируем файлы настроек.regsvr32, если она не подхватилась автоматически.Следуя этим шагам, вы обеспечите стабильную работу системы и забудете об ошибках, связанных с дефицитом памяти на стороне сервера.