Сервер 1С:Предприятия 8.3: служба агента, порты и подключение базы с рабочего места
Содержание
Чтобы открыть клиент-серверную базу
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 / PostgreSQL | 1433 / 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, которого создаёт установщик.
Порядок запуска:
- Откройте
services.mscи найдите службу агента. - Проверьте тип запуска — «Автоматически».
- Нажмите «Запустить». Через 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С:Предприятия».
- Заполните поля: кластер серверов (
srv1c), имя базы в кластере (buh), тип СУБД, сервер баз данных, имя базы данных, пользователь и пароль СУБД. - Для MS SQL Server поставьте смещение дат
2000. Для PostgreSQL оставьте0. - Отметьте «Создать базу данных в случае ее отсутствия».
Чтобы перенести существующую файловую базу
, выгрузите её в .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С?
Как работать с двумя версиями платформы на одном сервере?
srv1c:2541.