Как правильно перевести сервер 1С:Предприятие с 32-разрядной на 64-разрядную версию?

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

При эксплуатации серверных решений 1С многие системные администраторы рано или поздно сталкиваются с проблемой ограничения адресного пространства 32-разрядных процессов. Основным симптомом является ошибка "Нехватка памяти", даже если физически на сервере установлены десятки гигабайт оперативной памяти. Это связано с тем, что один 32-битный рабочий процесс rphost не может адресовать более 2-4 ГБ памяти. Единственным эффективным решением в данной ситуации является переход на 64-разрядную версию сервера 1С:Предприятие.

В этой статье мы подробно разберем процесс миграции, проанализируем технические нюансы переноса настроек кластера и выясним, какие изменения потребуются на стороне пользователей.

Шаг 1. Лицензирование и подготовка

Прежде чем приступать к техническим работам, разберем важнейший вопрос — лицензирование. Важно помнить, что лицензия на 32-разрядный сервер не дает права запускать 64-разрядную версию. Для 64-битного сервера требуется приобретение отдельной лицензии. Если вы используете программные ключи, убедитесь, что у вас есть пин-код именно для 64-разрядного сервера. При использовании аппаратных ключей серии HASP необходимо убедиться, что ключ поддерживает 64-битную архитектуру (как правило, это ключи серий Max или сетевые ключи).

Рекомендуем заранее скачать полный дистрибутив платформы соответствующей разрядности и сделать резервную копию каталога данных кластера (обычно это папка srvinfo).

Шаг 2. Перенос настроек кластера (баз и сеансов)

Рассмотрим ситуацию, когда необходимо сохранить список информационных баз, пользователей и настройки кластера. Все эти данные хранятся в каталоге srvinfo. Основная сложность заключается в том, что при установке 64-битной версии инсталлятор создает новую службу с путями по умолчанию, которые могут отличаться от путей 32-битной версии.

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

  1. Остановим службу 1C:Enterprise 8.3 Server Agent (32-разрядную).
  2. Установим 64-разрядную платформу 1С.
  3. Проанализируем пути к папке 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 на отдельный быстрый диск, отличный от системного. Это повышает производительность и упрощает обслуживание системы при переустановке ОС.

Шаг 3. Взаимодействие с клиентскими приложениями

Разберем вопрос, волнующий многих: нужно ли менять платформу у пользователей? Короткий ответ — нет, не обязательно. Клиентское приложение 1С (тонкий или толстый клиент) может быть 32-разрядным, даже если сервер работает в 64-разрядном режиме. Протоколы взаимодействия между ними совместимы, если совпадают номера релизов платформы.

Однако существуют ситуации, когда переход пользователей на 64-битный клиент целесообразен:

Посмотрим на ситуацию с оборудованием. Если вы переведете пользователей на 64-разрядные клиенты, вы можете столкнуться с тем, что сканеры штрих-кодов или фискальные регистраторы перестанут работать из-за отсутствия 64-битных драйверов (внешних компонент). Поэтому в большинстве случаев оптимально оставить пользователям 32-разрядный клиент.

Шаг 4. Особенности работы с COM-объектами

Проанализируем критически важный технический аспект: работу с COM-объектами. Если ваша конфигурация 1С использует внешние библиотеки (например, для обмена с банками или специфическими драйверами), которые существуют только в 32-битном исполнении, они не смогут загрузиться в 64-битный процесс rphost напрямую.

Для решения этой проблемы мы можем использовать механизм "Службы компонентов" (COM+) в Windows:

  1. Создадим в консоли "Службы компонентов" новое пустое приложение.
  2. Установим для него способ активации "Процесс библиотеки" или "Серверное приложение" (в зависимости от прав доступа).
  3. Добавим в компоненты нужную 32-битную DLL.

Это позволит 64-битному серверу 1С взаимодействовать с 32-битной библиотекой через суррогатный процесс Windows.

Шаг 5. Потребление оперативной памяти

Выясним, как изменится нагрузка на аппаратную часть. Следует учитывать, что 64-разрядные процессы используют указатели большего размера. На практике это означает, что потребление RAM сервером при том же количестве активных пользователей может вырасти на 20–30%. Это нормальное поведение системы.

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

Итоги и рекомендации

Перевод сервера на 64-разрядную архитектуру — это правильный шаг для любой растущей базы данных. Процедура не требует переустановки самих баз данных в SQL, так как меняется только слой приложения.

Подведем итог действий:

  1. Проверяем наличие лицензии x64.
  2. Останавливаем службу старой платформы.
  3. Устанавливаем x64 платформу.
  4. Корректируем путь к srvinfo в реестре или копируем файлы настроек.
  5. Регистрируем новую консоль администрирования через regsvr32, если она не подхватилась автоматически.
  6. Проверяем работу внешних компонент и COM-соединений.

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

← На главную