Как устроен ragent: служба, которая держит кластер 1С 8.3

· 9 мин

Содержание

Агент сервера 1С:Предприятия — это процесс ragent, который запускается службой «Агент сервера 1С:Предприятия 8.3» и слушает порт 1540. Он хранит список кластеров, запускает менеджер кластера rmngr и рабочие процессы rphost, а клиент 1С обращается к нему первым при каждом подключении к серверной базе.

Типичная ситуация: утром бухгалтерия звонит, что «1С не открывается, пишет про сервер». Первым делом администратор идёт смотреть именно эту службу. Если агент не запущен, не работает ни одна серверная база на машине, даже если SQL-сервер в порядке.

Место агента в клиент-серверной 1С

Серверная 1С 8.3 — это несколько процессов, у каждого своя задача. Агент — входная дверь и диспетчер.

Как проходит подключение пользователя:

  1. Клиент (1cv8.exe, тонкий клиент или веб-сервер) обращается к агенту на порт 1540.
  2. Агент сообщает, где работает менеджер нужного кластера, — по умолчанию порт 1541.
  3. Менеджер кластера выбирает рабочий процесс и выдаёт клиенту его адрес из диапазона портов, обычно 1560–1591.
  4. Дальше клиент общается напрямую с рабочим процессом rphost, а тот — с СУБД (MS SQL, PostgreSQL).

Отсюда практическое следствие: брандмауэр должен пропускать все три группы портов. Открыть только 1540 недостаточно — клиент дойдёт до агента и упадёт на этапе соединения с рабочим процессом.

Где агент хранит свои данные:

  • 📁 каталог реестра кластеров srvinfo — на Windows по умолчанию C:\Program Files\1cv8\srvinfo;
  • 📄 в нём папка reg_1541 с файлом 1CV8Clst.lst — список баз, рабочих серверов и администраторов кластера;
  • 🗂 там же папки snccntx* — сеансовые данные и кэш.

На Linux тот же каталог по умолчанию лежит в домашней папке пользователя службы: /home/usr1cv8/.1cv8/1C/1cv8.

ragent, rmngr и rphost: кто за что отвечает

Эти три процесса видно в диспетчере задач на любом сервере 1С. Их путают, а от того, кого из них «прибили», зависит последствие.

ПроцессПорт по умолчаниюЗадачаЧто будет, если завершить
ragent1540Агент: реестр кластеров, запуск остальных процессов, вход для клиентов и консолиНовые подключения невозможны, остальные процессы кластера тоже останавливаются
rmngr1541Менеджер кластера: сеансы, блокировки, распределение нагрузки, регламентные заданияКластер теряет управление, агент перезапустит менеджер, сеансы оборвутся
rphost1560–1591Рабочий процесс: выполняет серверный код, ходит в СУБДПользователи на этом процессе теряют сеансы, менеджер поднимет новый
ras1545Сервер администрирования для утилиты rac и сторонних консолейНе работает удалённое администрирование через rac

Процессов rphost обычно несколько. Их число зависит от настроек рабочего сервера и нагрузки — об этом ниже.

Чтобы понять, какой rphost отвечает за конкретную базу и сколько памяти он ест, откройте консоль кластера: Кластеры → <кластер> → Рабочие процессы. Там видны PID, память и число соединений — PID сверяете с диспетчером задач.

Консоль администрирования серверов 1С (1CV8 Servers.msc) тоже подключается через агент, на порт 1540. Если консоль пишет, что сервер недоступен, проблема почти всегда в агенте или сети, а не в базе.

Установка службы агента сервера

Агент ставится вместе с компонентом «Сервер 1С:Предприятия 8» в установщике платформы. Важная галочка — «Установить сервер 1С:Предприятия 8 как сервис Windows». Установщик создаёт локального пользователя USR1CV8 и запускает службу от его имени.

Что проверить после установки на Windows

  1. В services.msc есть служба «Агент сервера 1С:Предприятия 8.3 (x86-64)», тип запуска — «Автоматически».
  2. В свойствах службы на вкладке «Общие» в строке «Исполняемый файл» указаны версия платформы и порты.
  3. У пользователя службы есть право «Вход в качестве службы» (локальная политика безопасности → «Назначение прав пользователя»).
  4. Пользователь службы входит в группу «Пользователи журналов производительности» — без этого консоль не покажет загрузку процессов.
  5. У этого пользователя есть права на запись в srvinfo и временную папку.

Так выглядит строка запуска службы:

"C:\Program Files\1cv8\8.3.24.1691\bin\ragent.exe" -srvc -agent -regport 1541 -port 1540 -range 1560:1591 -d "C:\Program Files\1cv8\srvinfo" -debug

Ключ -debug включает отладку на сервере. В рабочем контуре его часто убирают, на тестовом оставляют для разработчиков.

Регистрация службы вручную

Ситуация из практики: обновили платформу, а служба всё ещё запускает старый ragent.exe. Её перерегистрируют из папки bin новой версии. Командную строку запускайте от имени администратора.

cd "C:\Program Files\1cv8\8.3.24.1691\bin"
ragent.exe -rmsrvc
ragent.exe -instsrvc -usr .\USR1CV8 -pwd "Пароль" -regport 1541 -port 1540 -range 1560:1591 -d "C:\Program Files\1cv8\srvinfo"
ragent.exe -start

Удаление и остановка службы обрывает сеансы всех пользователей всех баз на этом сервере. Делайте это вне рабочего времени и после предупреждения пользователей.

Если на сервере нужны две разные версии платформы одновременно, вторую службу регистрируют на других портах, например 2540/2541 и диапазон 2560:2591, и с отдельным каталогом srvinfo.

Linux

На Linux пакеты сервера ставят службу под пользователем usr1cv8. В актуальных версиях платформы в папке установки лежит unit-файл systemd с номером версии в имени, его подключают командой systemctl link, затем включают и запускают через systemctl enable --now. Проверка состояния — systemctl status по имени службы, а то, что агент слушает порт, видно в выводе ss -tlnp | grep 1540.

Публикация баз на веб-сервере

Сам агент веб-публикациями не занимается. Публикует базу веб-сервер (IIS или Apache) с модулем расширения веб-сервера 1С. Для кластера этот модуль — обычный клиент: он так же идёт на порт 1540 агента, затем к менеджеру и рабочему процессу.

Порядок публикации серверной базы:

  1. На машине с веб-сервером установите платформу с компонентом «Модули расширения веб-сервера» той же версии, что и сервер 1С.
  2. Запустите Конфигуратор от имени администратора и откройте базу.
  3. Выберите Администрирование → Публикация на веб-сервере.
  4. Укажите имя публикации, тип веб-сервера и каталог. Отметьте нужное: тонкий и веб-клиент, HTTP-сервисы, OData.
  5. Нажмите «Опубликовать» и проверьте адрес http://<сервер>/<имя публикации> в браузере.

В каталоге публикации появится файл default.vrd. Строка подключения к серверной базе в нём выглядит так:

<point xmlns="http://v8.1c.ru/8.2/virtual-resource-system"
       base="/buh"
       ib="Srvr=&quot;srv01&quot;;Ref=&quot;buh&quot;;"/>

Здесь srv01 — имя сервера с агентом, buh — имя базы в кластере. Если кластер работает на нестандартных портах, после имени сервера через двоеточие указывают порт менеджера кластера, а не агента: srv01:2541.

Если веб-сервер стоит на отдельной машине, проверьте доступ к портам 1540, 1541 и диапазону рабочих процессов именно с неё. Публикация может открываться, но падать на входе в базу как раз из-за закрытого диапазона 1560–1591.

Для Apache и IIS, на которых нет графического Конфигуратора, публикацию делают утилитой webinst из папки bin. Её ключи меняются от версии к версии, поэтому сверяйтесь с выводом webinst -?.

Агент не запускается: разбор ошибок

Начинайте не с переустановки, а с журнала: Просмотр событий → Журналы Windows → Приложение, источник — служба 1С. Затем проверьте, слушается ли порт:

netstat -ano | findstr :1540

Если в выводе есть строка LISTENING, агент работает, и искать надо в сети или правах. Если строки нет — служба не стартовала или порт занят другим процессом. По PID из последнего столбца процесс находится в диспетчере задач.

С компьютера пользователя доступность агента проверяют в PowerShell:

Test-NetConnection srv01 -Port 1540
Диагностика: выберите симптом

Очистка сеансового кэша кластера

Это частый приём, когда агент запускается, но сеансы «зависли», а базы не открываются после аварийной остановки.

  1. Предупредите пользователей: все сеансы на сервере будут разорваны.
  2. Остановите службу агента сервера 1С.
  3. Убедитесь, что в диспетчере задач не осталось процессов ragent, rmngr, rphost.
  4. Скопируйте папку reg_1541 в резервное место.
  5. Удалите в reg_1541 только папки snccntx*. Файл 1CV8Clst.lst не трогайте — в нём список баз.
  6. Запустите службу и проверьте вход в базу.

Удалённый 1CV8Clst.lst означает, что все базы придётся заново регистрировать в кластере. Если такое случилось, восстановите файл из сделанной копии, а не создавайте кластер заново.

Настройка производительности рабочих процессов

Агент сам по себе почти не нагружает сервер. Память и процессор потребляют рабочие процессы rphost, а их поведение задаётся в двух местах консоли.

Свойства рабочего сервера

Открываются так: Кластеры → <кластер> → Рабочие серверы → <сервер> → Свойства. Здесь же задаётся диапазон портов рабочих процессов.

Основные параметры:

  • 🔢 Количество ИБ на процесс. Значение 1 изолирует каждую базу в своём процессе: падение одной не роняет остальные, но процессов и памяти больше. Значение 0 снимает ограничение.
  • 👥 Количество соединений на процесс. Ограничивает, сколько соединений обслуживает один rphost, прежде чем менеджер запустит следующий.
  • 💾 Максимальный объём памяти рабочих процессов. Общий лимит для всех rphost этого сервера. Задавайте его с запасом под операционную систему и другие службы.
  • ⏱ Безопасный расход памяти за один вызов. Защищает от одного тяжёлого отчёта, который съедает всю память: вызов, превысивший порог, прерывается с ошибкой, а остальные пользователи продолжают работу.

Свойства кластера

Кластеры → <кластер> → Свойства. Здесь настраивают перезапуск процессов, которые «распухли» от памяти:

  • Интервал перезапуска — плановый перезапуск рабочих процессов через заданное число секунд. Например, 86400 — раз в сутки.
  • Допустимый объём памяти рабочих процессов и интервал превышения допустимого объёма памяти — если процесс держит объём выше порога дольше интервала, менеджер выводит его из работы.
  • Принудительно завершать проблемные процессы — флаг, без которого процесс, переведённый в выключенные, может висеть, пока последний пользователь не выйдет.
  • Режим распределения нагрузки — «Приоритет по производительности» или «Приоритет по памяти».

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

Пример исходной настройки для сервера на 32 ГБ ОЗУ, где кроме 1С работает только СУБД на отдельной машине: максимальный объём памяти рабочих процессов около 20 ГБ, безопасный расход за вызов 2–4 ГБ, перезапуск раз в сутки ночью. Цифры — отправная точка, их подбирают по данным консоли за неделю работы.

Что ещё ускоряет кластер

  • 🧩 Держите СУБД и сервер 1С в одной быстрой сети: задержка между ними сказывается на каждом запросе.
  • 🔁 Разнесите тяжёлые регламентные задания на ночь.
  • 🖥 На мощной машине вместо раздувания одного рабочего сервера добавляют второй сервер в кластер и настраивают требования назначения функциональности — это тоже делается в свойствах рабочего сервера.

Частые вопросы

Можно ли запустить агент сервера 1С без службы, вручную?
Да. Команда ragent.exe с ключами -port, -regport, -range, -d из папки bin запускает агент в окне консоли. Так удобно ловить ошибки старта, но при выходе из системы агент остановится.
Нужна ли лицензия на сам агент сервера?
Служба агента запускается и без неё, но для работы пользователей с серверными базами нужна лицензия на сервер 1С:Предприятия плюс клиентские лицензии. Без серверной лицензии базы не откроются.
Чем ras отличается от ragent?
ragent управляет кластером, а ras — посредник для удалённого администрирования утилитой rac и сторонними консолями. По умолчанию ras слушает порт 1545 и запускается отдельной службой.
Почему процессов rphost стало много?
Менеджер кластера запускает новые процессы, когда растёт число соединений или срабатывает перезапуск по памяти. Если старые процессы не завершаются, проверьте флаг принудительного завершения и долгие сеансы.
Как посмотреть список кластеров из командной строки?
Через rac: при запущенном ras команда rac cluster list выводит кластеры и их идентификаторы. Остальные подкоманды смотрите в rac help.