32 или 64 бита: проверяем, какой сервер 1С:Предприятия у вас работает
Содержание
Быстрее всего разрядность сервера 1С определяется по пути к процессу ragent.exe. Путь начинается с C:\Program Files (x86)\1cv8\ — сервер 32-разрядный (x86). Путь C:\Program Files\1cv8\ на 64-разрядной Windows означает 64-разрядный сервер (x64). Путь видно в Диспетчере задач, в свойствах службы агента или одной командой PowerShell.
Вопрос обычно всплывает не из любопытства. Рабочий процесс падает с нехваткой памяти, внешняя компонента не грузится, а в лицензии написано «x86-64». Ниже разобраны все способы проверки: в Windows, в Linux и изнутри самой 1С. Отдельно — как перейти с 32 бит на 64 и не потерять список баз кластера.
Чем 32-разрядный сервер 1С отличается от 64-разрядного
Сервер 1С 8.3 — это три вида процессов: агент ragent, менеджер кластера rmngr и рабочие процессы rphost. Все они ставятся из одного дистрибутива и имеют одну разрядность. Проверять достаточно любой из них.
Главное различие — память. 32-разрядный процесс адресует не больше 4 ГБ, а на практике рабочему процессу доступно меньше. 64-разрядный процесс упирается только в физическую память сервера и файл подкачки.
| Параметр | x86 (32 бита) | x64 (64 бита) |
|---|---|---|
Память на один rphost | до 4 ГБ на 64-битной Windows, меньше на 32-битной | ограничена ресурсами сервера |
| Каталог установки в Windows | C:\Program Files (x86)\1cv8\ | C:\Program Files\1cv8\ |
| Можно поставить на 32-битную ОС | да | нет |
| Внешние компоненты на сервере | нужны 32-битные версии | нужны 64-битные версии |
| Лицензия на сервер | подходит 32-битная или 64-битная | нужна 64-битная (x86-64) |
Для базы на 10–20 пользователей и пару гигабайт разница может быть незаметна. Когда база растёт, тяжёлые отчёты, закрытие месяца и обновление конфигурации на 32-битном сервере начинают падать с ошибками памяти. Поэтому для новых установок практики ставят x64.
Разрядность клиента и сервера друг от друга не зависят. 32-битный толстый или тонкий клиент спокойно работает с 64-битным сервером. Совпадать должна версия платформы (например, 8.3.24.1548 у клиента и сервера), а не битность.
Способ 1. Диспетчер задач Windows
Самый наглядный путь, если у вас есть доступ к рабочему столу сервера.
- Откройте Диспетчер задач:
Ctrl+Shift+Esc. - Перейдите на вкладку «Подробности».
- Щёлкните правой кнопкой по заголовку любого столбца и выберите «Выбрать столбцы».
- Отметьте «Платформа» и «Командная строка», нажмите «ОК».
- Найдите в списке
ragent.exe,rmngr.exeиrphost.exe.
В столбце «Платформа» будет написано «32 бита» или «64 бита». Это прямой ответ, без догадок по пути. В столбце «Командная строка» видно полный путь к исполняемому файлу и ключи запуска, включая порт агента и каталог srvinfo.
На вкладке «Процессы» 32-битные программы помечены припиской «(32 бита)» после имени. Но процессы сервера там часто свёрнуты в группу служб, поэтому вкладка «Подробности» удобнее.
Если процессов ragent.exe нет вообще — сервер 1С на этой машине не запущен или установлен как приложение, а не как служба. Проверьте службы: Win+R → services.msc, найдите строку с «1C:Enterprise 8.3 Server Agent». У 64-битной установки в названии обычно стоит «(x86-64)».
Способ 2. Путь к файлу и заголовок ragent.exe
Когда Диспетчера задач под рукой нет (сервер без графики, доступ только по файлам), смотрите сам исполняемый файл.
Путь к службе агента
- Откройте
services.msc. - Откройте свойства службы агента сервера 1С.
- На вкладке «Общие» посмотрите поле «Исполняемый файл».
Строка выглядит примерно так:
"C:\Program Files\1cv8\8.3.24.1548\bin\ragent.exe" -srvc -agent -regport 1541 -port 1540 -range 1560:1591 -d "C:\Program Files\1cv8\srvinfo"
Program Files без (x86) — 64 бита. Вариант с (x86) — 32 бита.
Проверка по заголовку PE
Путь — косвенный признак. Администратор мог вручную положить 32-битный дистрибутив в любой каталог. Однозначно разрядность записана в заголовке исполняемого файла: поле Machine равно 0x8664 для x64 и 0x14C для x86.
Прочитать его можно в PowerShell без сторонних утилит:
$f = "C:\Program Files\1cv8\8.3.24.1548\bin\ragent.exe"
$b = [System.IO.File]::ReadAllBytes($f)
$pe = [BitConverter]::ToInt32($b, 0x3C)
$m = [BitConverter]::ToUInt16($b, $pe + 4)
switch ($m) { 0x8664 {"x64 (64 бита)"} 0x14C {"x86 (32 бита)"} default {"другое: 0x{0:X}" -f $m} }
Подставьте свой путь из свойств службы. Скрипт только читает файл и ничего не меняет, запускать его можно на работающем сервере.
Если на машине стоит Visual Studio, то же самое покажет dumpbin /headers ragent.exe в строке «machine».
Способ 3. Командная строка: wmic, sc и PowerShell
Удобно, когда вы подключены к серверу удалённо через консоль или проверяете несколько машин скриптом.
wmic
wmic process where "name='ragent.exe'" get ProcessId,ExecutablePath
Команда вернёт PID и полный путь. Дальше всё как во втором способе: Program Files (x86) — 32 бита.
На свежих сборках Windows утилита wmic объявлена устаревшей и может быть не установлена. Тогда используйте PowerShell.
PowerShell
Get-CimInstance Win32_Process -Filter "Name='rphost.exe' OR Name='ragent.exe'" |
Select-Object Name, ProcessId, ExecutablePath
Для удалённой машины добавьте -ComputerName имя_сервера (нужны права администратора и включённый WinRM).
sc — без запуска процессов
Если служба остановлена, процесса нет, и wmic ничего не найдёт. Путь к файлу берите из настроек службы:
sc query state= all | findstr /i "1C:Enterprise"
sc qc "1C:Enterprise 8.3 Server Agent (x86-64)"
Первая команда покажет точное имя службы на вашей машине. Его подставьте во вторую. В выводе нужна строка BINARY_PATH_NAME.
Способ 4. Изнутри 1С: тип платформы на сервере
Приём, о котором вспоминают реже всего, хотя он не требует доступа к серверу вообще. Встроенный язык знает, на какой платформе выполняется код. Объект СистемнаяИнформация имеет свойство ТипПлатформы.
Если выполнить его в серверном контексте, вы получите тип платформы сервера приложений:
&НаСервере
Функция ТипПлатформыСервера()
Инфо = Новый СистемнаяИнформация;
Возврат Строка(Инфо.ТипПлатформы);
КонецФункции
&НаКлиенте
Процедура Проверить(Команда)
Сообщить("Сервер: " + ТипПлатформыСервера());
КонецПроцедуры
Ответ будет вида Windows_x86_64 (64 бита) или Windows_x86 (32 бита), для Linux — Linux_x86_64. Код удобно положить во внешнюю обработку
и открыть через Файл → Открыть в клиент-серверной базе.
Тот же объект на клиенте покажет разрядность клиента, а не сервера. Путаница на этом шаге — самая частая: человек выполняет код в &НаКлиенте и видит битность своей рабочей станции.
Открыть внешнюю обработку могут не все пользователи: это зависит от прав. Если команда меню недоступна, попросите администратора базы.
Как проверить разрядность сервера 1С на Linux
В Linux 32-битные и 64-битные сборки сервера лежат в разных каталогах. Начните с процесса:
ps -eo pid,args | grep [r]agent
В выводе будет полный путь. Для новых версий платформы с единым установщиком это /opt/1cv8/x86_64/8.3.xx.xxxx/ragent. В старых пакетах встречается /opt/1C/v8.3/x86_64/ или /opt/1C/v8.3/i386/. Каталог x86_64 — 64 бита, i386 — 32 бита.
Однозначно разрядность покажет утилита file:
file /opt/1cv8/x86_64/8.3.24.1548/ragent
Ответ «ELF 64-bit LSB … x86-64» — сервер 64-битный. «ELF 32-bit LSB … Intel 80386» — 32-битный.
Не путайте разрядность сервера 1С с разрядностью системы. Команда uname -m (ответ x86_64) говорит только о том, что ОС 64-битная. На ней мог быть запущен и 32-битный сервер 1С.
Если сервер работает как служба systemd, путь также видно в её описании:
systemctl list-units --all | grep -i 1c
systemctl status имя_службы
Как перейти с 32-битного сервера 1С на 64-битный
Перевод на x64 не требует выгрузки баз. Базы лежат в СУБД (MS SQL, PostgreSQL), а сервер 1С только работает с ними. Меняется программа сервера, а список баз кластера нужно сохранить.
Переход останавливает сервер 1С: все пользователи будут отключены. Делайте его в нерабочее время и предупредите людей заранее.
- Убедитесь, что ОС 64-битная, а лицензия на сервер — x86-64. 32-битная лицензия на сервер не позволит запустить 64-битный сервер.
- Запишите параметры текущей службы: порты (
-port,-regport,-range), путь-dк каталогуsrvinfoи учётную запись, от которой работает служба. - Скопируйте каталог
srvinfoцеликом в резервное место. В нём хранится реестр кластера: список баз, рабочие серверы, администраторы. - Остановите службу 32-битного агента и переведите её в тип запуска «Отключена».
- Установите 64-битную технологическую платформу той же версии. В установщике отметьте компоненты «Сервер 1С:Предприятия 8» и «Модули расширения веб-сервера», если публикуете базы через веб.
- При установке как службы укажите ту же учётную запись и те же порты.
- Направьте новую службу на старый каталог
srvinfo(ключ-dв командной строке службы) или скопируйте его содержимое в новый каталог. - Запустите службу и откройте консоль администрирования кластера: базы должны быть на месте.
- Проверьте вход в 2–3 базы и работу регламентных заданий.
После проверки 32-битную платформу можно удалить через «Программы и компоненты». Не делайте этого раньше: старая служба — путь отката.
Не запускайте две службы агента одновременно. Они займут одни и те же порты 1540 и 1541, вторая не стартует, а в журнале будет ошибка привязки порта.
Что ещё сменить вместе с сервером
- 🔌 COM-соединение
comcntr.dll. Его разрядность должна совпадать с программой, которая подключается к 1С, а не с сервером. Регистрируйтеregsvr32из каталогаbinнужной разрядности. - 🌐 Публикация на веб-сервере. Модуль
wsisapi.dll(IIS) илиwsap24.dll(Apache) должен совпадать по разрядности с веб-сервером и с версией платформы. - 🧩 Внешние компоненты. Старые компоненты только под x86 на 64-битном сервере не загрузятся. Нужна 64-битная версия от поставщика.
- 🗂 Консоль администрирования. После переустановки консоль иногда не открывается. Помогает повторная регистрация
radmin.dllиз каталогаbinновой версии:regsvr32 "C:\Program Files\1cv8\8.3.24.1548\bin\radmin.dll".
Ошибки, которые указывают на разрядность
Часть проблем выглядит как сбой 1С, а на деле это ограничение 32-битного сервера или несовпадение битности компонентов.