Почему процесс rphost 32-битный при 64-битной системе и как сделать его 64-битным

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

При администрировании сервера 1С системные администраторы часто сталкиваются с ситуацией, когда на сервере установлена 64-битная операционная система Windows Server и 64-битный MS SQL Server, однако в Диспетчере задач рабочий процесс 1С rphost.exe отображается как 32-битный (x86). Проанализируем, почему так происходит, насколько это критично для работы базы данных и какими способами можно перевести rphost.exe в 64-битный режим.

Взаимосвязь разрядности ОС, СУБД и сервера 1С

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

  1. Операционная система и СУБД: 64-битные версии ОС и MS SQL Server позволяют эффективно использовать оперативную память сервера для системных нужд и кэширования баз данных.
  2. Сервер приложений 1С: Разрядность процесса rphost.exe определяется исключительно тем, какой дистрибутив «Сервера 1С:Предприятия» установлен в системе и какая лицензия для него используется. Если установлен 32-битный сервер 1С, то и процессы rphost.exe, rmngr.exe, ragent.exe будут 32-битными, даже на 64-битной ОС.
  3. Лицензирование: Ключи защиты и программные лицензии для 32-битного и 64-битного сервера 1С различаются. Лицензия на 32-битный сервер не позволяет запустить 64-битный сервер 1С. При этом 64-битная лицензия универсальна и разрешает запуск как 64-битной, так и 32-битной службы сервера.

Технические ограничения и риски 32-битного процесса rphost

Рассмотрим, чем опасно использование 32-битного процесса rphost.exe в нагруженных системах:

  1. Лимит адресации памяти: Главное ограничение 32-битной архитектуры в Windows — невозможность адресовать более 2 ГБ виртуальной памяти на один процесс (в редких случаях с режимом increaseuserva — до 3 ГБ).
  2. Падения при тяжелых операциях: Если пользователи запускают ресурсоемкие задачи (закрытие месяца, групповой перепроведение документов, формирование сложного отчета или выполнения фоновых заданий), требующие обработки большого массива данных в памяти сервера, 32-битный rphost.exe исчерпывает лимит в 2 ГБ и аварийно завершается с ошибкой «Недостаточно памяти на сервере 1С» (Out of memory).
  3. Влияние 64-битного rphost.exe: Перевод сервера на 64-битную версию полностью снимает ограничение в 2–3 ГБ на процесс, позволяя rphost.exe использовать весь доступный объем ОЗУ сервера.

Как сделать процесс rphost 64-битным

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

  1. Приобретение лицензии: Необходима лицензия «1С:Предприятие 8.3. Лицензия на сервер (x86-64)».

    Альтернативный бюджетный вариант: Если полноценная 64-битная лицензия выходит за рамки бюджета, а число пользователей не превышает 5, можно использовать лицензию «1С:Предприятие 8.3. Лицензия на сервер (x86-64) МИНИ». Она дает полнофункциональный 64-битный рабочий процесс rphost.exe, но имеет аппаратное ограничение на 5 пользовательских сеансов (+1 сеанс администратора) и 1 информационную базу.

  2. Установка 64-битного дистрибутива: Скачаем и установим 64-битный дистрибутив сервера 1С («Cервер 1С:Предприятия (64-bit)»).
  3. Замена службы: Остановим и удалим службу 32-битного сервера 1С, после чего зарегистрируем и запустим службу 64-битного сервера.

Настройка кластера для предотвращения падений на 32-битном сервере

Если покупка 64-битной лицензии временно невозможна, проанализируем, как стабилизировать работу 32-битного rphost.exe средствами самой платформы 1С.

В консоли администрирования кластера серверов 1С настроим автоперезапуск и балансировку процессов:

  1. Допустимый объем памяти: В свойствах кластера установим параметр Допустимый объем памяти (например, около 1 500 000 КБ или 1.5 ГБ). При превышении этого порога кластер автоматически создаст новый процесс rphost.exe, переведет на него новые сеансы, а старый перезапустит после завершения активных вызовов.
  2. Интервал перезапуска рабочих процессов: Зададим регулярный перезапуск процессов (например, каждые 86400 секунд / 24 часа), чтобы избежать утечек памяти.
  3. Регулировка процессов на сервер: В свойствах рабочего сервера настроим параметры Количество ИБ на процесс и Количество соединений на процесс. Это позволит кластеру распределять нагрузку между несколькими 32-битными процессами rphost.exe.

Совместимость 32-битных внешних компонентов с 64-битным rphost

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

Для решения этой проблемы применимы следующие подходы:

  1. Перевод компонентов на 64-бит: Обновление используемых внешних библиотек и драйверов до их 64-битных версий или использование Native API компонентов.
  2. Использование COM+ (Component Services): В ОС Windows 32-битный COM-объект регистрируется в оснастке «Службы компонентов» (Component Services) как изолированное приложение COM+. В этом случае 64-битный rphost.exe взаимодействует с 32-битной библиотекой через межпроцессный вызов без сбоев.

Параллельная установка 32-битного и 64-битного серверов

На одном физическом или виртуальном сервере под управлением 64-битной ОС допускается одновременно запускать службы и 32-битного, и 64-битного серверов 1С. Для этого службам назначаются разные сетевые порты (например, стандартные 1540/1541 для одного кластера и 2540/2541 для другого). Это позволяет провести бесшовное тестирование 64-битной среды перед окончательной миграцией.

← На главную