Сервер 1С:Предприятия 8.3: служба агента, порты и подключение базы с рабочего места

· 10 мин

Содержание

Чтобы открыть клиент-серверную базу 1С, нужны три вещи: запущенная служба «Агент сервера 1С:Предприятия 8.3» на сервере, открытые TCP-порты 1540, 1541 и 1560–1591, и база, зарегистрированная в кластере. На рабочем месте её добавляют в список баз как «На сервере 1С:Предприятия» с указанием имени сервера и имени базы в кластере. Строка подключения выглядит так: Srvr="srv1c";Ref="buh";.

Типичная ситуация: файловая база выросла до 15–20 ГБ, при 12 пользователях документы проводятся по минуте, и фирма покупает лицензию сервера. Сервер установлен, СУБД стоит рядом, а с рабочих мест база не открывается: «конечный компьютер отверг запрос». Почти всегда причина в одном из трёх пунктов выше.

Как устроен клиент-сервер 1С: какие процессы работают

Клиент-серверный вариант 1С состоит из трёх уровней: клиент 1С, кластер серверов 1С и СУБД (MS SQL Server, PostgreSQL и другие поддерживаемые). Пользователь никогда не обращается к СУБД напрямую — с базой данных работает только сервер 1С.

На сервере 1С крутятся три вида процессов:

  • 🛰️ ragent — агент сервера. Слушает порт 1540, принимает первый запрос клиента и обслуживает консоль администрирования.
  • 🗂️ rmngr — менеджер кластера. Слушает порт 1541, хранит реестр кластера: список баз, рабочих серверов, сеансов.
  • ⚙️ rphost — рабочие процессы. Именно они выполняют код конфигурации и общаются с СУБД. Порты берутся из диапазона 1560–1591.

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

Связь сервер 1С → СУБД идёт по своим портам: у MS SQL Server по умолчанию 1433, у PostgreSQL — 5432. Клиентам эти порты открывать не нужно.

КомпонентПорт по умолчаниюКто к нему ходит
Агент сервера (ragent)1540Клиенты 1С, консоль кластера
Менеджер кластера (rmngr)1541Клиенты 1С
Рабочие процессы (rphost)1560–1591Клиенты 1С
Сервер администрирования (ras)1545Утилита rac
MS SQL / PostgreSQL1433 / 5432Только сервер 1С

Порты сервера 1С и правила брандмауэра

Входящие соединения нужно разрешить на сервере 1С. На клиентах обычно ничего открывать не нужно: исходящий трафик Windows по умолчанию пропускает.

В Windows Server 2016 и новее правило быстрее создать в PowerShell от имени администратора:

New-NetFirewallRule -DisplayName "1C Server 8.3" -Direction Inbound -Protocol TCP -LocalPort 1540-1541,1560-1591 -Action Allow

Если используете rac для администрирования с другой машины, добавьте ещё порт 1545.

Проверить порты с рабочего места можно до запуска 1С:

Test-NetConnection srv1c -Port 1540
Test-NetConnection srv1c -Port 1541
Test-NetConnection srv1c -Port 1560

TcpTestSucceeded : True по 1540 и 1541 значит, что агент и менеджер доступны. Порт 1560 отвечает, только если на нём уже работает рабочий процесс — обычно первый из диапазона занимается сразу после старта кластера.

На самом сервере посмотреть, кто слушает порты, помогает команда:

netstat -ano | findstr "1540 1541 1560"

В последней колонке — PID процесса. Сверьте его с ragent.exe, rmngr.exe и rphost.exe в диспетчере задач.

Клиент получает адрес рабочего процесса по имени сервера, а не по IP. Если рабочие места не разрешают имя srv1c через DNS, добавьте строку вида 192.168.1.10 srv1c в C:\Windows\System32\drivers\etc\hosts на каждом клиенте. Без этого порты открыты, а подключение всё равно падает.

Запуск службы агента и регистрация базы в кластере

Служба агента сервера

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

Порядок запуска:

  1. Откройте services.msc и найдите службу агента.
  2. Проверьте тип запуска — «Автоматически».
  3. Нажмите «Запустить». Через 10–20 секунд в диспетчере задач появятся ragent.exe, rmngr.exe и минимум один rphost.exe.

Если служба сразу останавливается, загляните в журнал «Приложение» в «Просмотре событий»: сервер 1С пишет туда причины отказа запуска.

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

Консоль администрирования кластера

Консоль — оснастка MMC, она ставится вместе с компонентом «Администрирование сервера 1С:Предприятия». Если в меню «Пуск» ярлык есть, а консоль открывается пустой или с ошибкой, оснастку нужно зарегистрировать от имени администратора:

regsvr32 "C:\Program Files\1cv8\8.3.xx.xxxx\bin\radmin.dll"

Вместо 8.3.xx.xxxx подставьте номер установленной версии. Разрядность консоли и radmin.dll должна совпадать.

В консоли: правой кнопкой по «Центральные серверы 1С:Предприятия 8.3» → «Создать» → «Центральный сервер», укажите имя сервера. Дальше раскройте Кластеры → Локальный кластер → Информационные базы.

Создание базы на сервере

Базу можно создать в консоли кластера или прямо из окна запуска 1С. Второй путь проще:

  1. В окне запуска нажмите «Добавить» → «Создание новой информационной базы».
  2. Выберите шаблон конфигурации или пустую базу.
  3. На шаге расположения выберите «На сервере 1С:Предприятия».
  4. Заполните поля: кластер серверов (srv1c), имя базы в кластере (buh), тип СУБД, сервер баз данных, имя базы данных, пользователь и пароль СУБД.
  5. Для MS SQL Server поставьте смещение дат 2000. Для PostgreSQL оставьте 0.
  6. Отметьте «Создать базу данных в случае ее отсутствия».

Чтобы перенести существующую файловую базу , выгрузите её в .dt в Конфигураторе, создайте пустую серверную базу и загрузите туда этот файл.

Подключение на рабочем месте

На каждом клиенте: «Добавить» → «Добавление в список существующей информационной базы» → «На сервере 1С:Предприятия». Нужны только два поля — кластер серверов и имя базы.

Версия платформы на клиенте должна совпадать с версией сервера до последней цифры. Клиент 8.3.24.1548 к серверу 8.3.24.1691 не подключится. Ставьте на рабочие места ту же сборку, что на сервере.

Параметры запуска ragent: порты, каталог кластера, отладка

Порты, каталог реестра кластера и режим отладки агент получает из командной строки службы. Именно её правят, когда говорят про «конфиг ragent». Посмотреть текущую строку:

sc qc "1C:Enterprise 8.3 Server Agent (x86-64)"

Имя службы для sc смотрите в свойствах службы в services.msc, поле «Имя службы». Типичная строка после установки:

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

Что значат параметры:

ПараметрЗначение
-srvcЗапуск как служба Windows
-agentРежим агента сервера
-port 1540Порт агента
-regport 1541Порт менеджера кластера
-range 1560:1591Диапазон портов для рабочих процессов
-d "…\srvinfo"Каталог, где лежит реестр кластера
-debugРазрешает отладку на сервере (по умолчанию выключена)

Строка хранится в реестре: HKLM\SYSTEM\CurrentControlSet\Services\<имя службы>, параметр ImagePath. Меняют её, когда нужно:

  • 🔀 запустить на одном сервере две версии платформы — второму агенту дают порты 2540, 2541, 2560:2591;
  • 🐞 включить отладку — добавить -debug;
  • 📁 перенести каталог srvinfo на другой диск.

После правки службу перезапускают. Если кластер слушает нестандартный порт, на клиенте имя сервера указывают с портом менеджера: srv1c:2541.

В каталоге srvinfo лежит реестр кластера: подкаталог reg_1541 со списком баз и настройками. Сделайте копию srvinfo перед любой правкой параметров запуска. Если реестр повредится, базы пропадут из консоли, хотя данные в СУБД останутся целы.

Общие настройки платформы задаются файлом conf.cfg в каталоге bin\conf. Технологический журнал включается отдельным файлом logcfg.xml — о нём в следующем разделе.

На Linux с платформой 8.3.21 и новее сервер запускается юнитом systemd из каталога установки. Посмотреть фактическую строку запуска и параметры можно командой systemctl cat с именем юнита сервера.

Ошибки подключения к серверу 1С: где искать причину

Ошибка подключения обычно содержит адрес и системный код. Пример: server_addr=tcp://srv1c:1541 descr=10061(0x0000274D): Подключение не установлено, т.к. конечный компьютер отверг запрос на подключение. Код 10061 — порт закрыт или на нём никто не слушает. Код 10060 — превышен таймаут: пакеты режет брандмауэр по дороге.

Диагностика: выберите симптом

Технологический журнал

Когда текст ошибки ничего не объясняет, включите технологический журнал. Создайте файл logcfg.xml в каталоге C:\Program Files\1cv8\conf\:

<?xml version="1.0" encoding="UTF-8"?>
<config xmlns="http://v8.1c.ru/v8/tech-log">
  <log location="D:\1C_TechLog" history="24">
    <event>
      <eq property="name" value="EXCP"/>
    </event>
    <property name="all"/>
  </log>
</config>

Платформа подхватит файл примерно через минуту, перезапуск службы не нужен. Событие EXCP пишет исключения, history="24" хранит журнал 24 часа.

Не оставляйте журнал с широким набором событий надолго. На нагруженном сервере он за сутки занимает десятки гигабайт. Разобрались — удалите logcfg.xml.

Утилита rac

Для проверки из командной строки сначала запускают сервер администрирования, затем обращаются к нему через rac:

ras cluster --port=1545 localhost:1540
rac cluster list
rac infobase summary list --cluster=<uuid кластера>
rac session list --cluster=<uuid кластера>

rac cluster list выдаёт идентификатор кластера, его подставляют в остальные команды. Полный список подкоманд — в rac help.

Настройка сервера 1С под много пользователей

Когда к серверу подключаются 30–50 человек, настройки по умолчанию начинают мешать: рабочие процессы разрастаются по памяти, а сеансы виснут на одном процессе. Основные регулировки находятся в свойствах рабочего сервера в консоли кластера: Кластеры → Локальный кластер → Рабочие серверы → <сервер> → Свойства.

Что смотреть в первую очередь:

  • 🧮 Количество ИБ на процесс и количество соединений на процесс — ограничивают, сколько баз и соединений обслуживает один rphost. Значение 0 снимает ограничение. Разнесение тяжёлых баз по разным процессам уменьшает взаимное влияние.
  • 🧠 Максимальный объём памяти рабочих процессов — общий потолок для всех rphost сервера. Оставьте запас для СУБД, если она стоит на той же машине.
  • 🛑 Безопасный расход памяти за один вызов — защищает от отчёта, который пытается съесть всю память. Вызов, превысивший порог, прерывается с ошибкой, а не роняет процесс со всеми пользователями.

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

Несколько практических правил:

  • 🗄️ Если СУБД и сервер 1С на одной машине, ограничьте память СУБД. MS SQL Server по умолчанию занимает почти всю память сервера. Задайте «Максимальный объём памяти сервера» в его свойствах.
  • 💽 Каталоги srvinfo и файлы базы данных держите на SSD. Кэш сервера активно пишется на диск.
  • 🔌 Между сервером 1С и СУБД нужна сеть от 1 Гбит/с с минимальной задержкой. Лучше всего — одна машина или одна стойка.

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

Частые вопросы про клиент-серверную 1С

Нужно ли ставить сервер 1С на каждое рабочее место?
Нет. На клиентах достаточно тонкого или толстого клиента той же версии, что сервер. Сервер 1С ставится только на сервере.
Можно ли поставить сервер 1С и СУБД на один компьютер?
Можно. Для 10–30 пользователей это частая схема. Главное — ограничить память СУБД, чтобы она не вытесняла рабочие процессы 1С.
Нужна ли отдельная лицензия на сервер 1С?
Да. Для работы сервера нужна лицензия сервера, а для пользователей — клиентские лицензии по числу одновременных сеансов. Без лицензии база не запустится.
Как работать с двумя версиями платформы на одном сервере?
Запустите второй агент отдельной службой с другими портами, например 2540, 2541 и 2560:2591. На клиенте указывайте сервер как srv1c:2541.
Можно ли открыть клиент-серверную базу через интернет?
Прямой доступ по портам 1540–1591 из интернета открывать небезопасно. Используют VPN, удалённый рабочий стол или публикацию базы на веб-сервере для тонкого и веб-клиента.