Клиент-серверная 1С изнутри: кто кого вызывает и где что настраивать
Содержание
В серверном варианте 1С:Предприятие 8.3 пользователь не открывает файл базы. Его клиент подключается к службе на сервере, кластер серверов 1С выполняет код конфигурации в своих рабочих процессах, а данные лежат в отдельной СУБД — MS SQL Server, PostgreSQL, IBM Db2 или Oracle. Клиент с СУБД напрямую не общается вообще.
Отсюда все отличия от файловой базы: выше скорость при многих пользователях, нет блокировок файла 1Cv8.1CD, зато больше звеньев, которые надо настроить и которые могут сломаться. Ниже по порядку: какие процессы работают, как идёт запрос, где задаётся адрес базы, что с лицензиями и как искать причину тормозов.
Схема клиент-серверного варианта 1С: три звена
Клиент-серверная архитектура 1С состоит из трёх уровней:
| Звено | Что это | Где работает |
|---|---|---|
| 💻 Клиент | Тонкий клиент, толстый клиент или браузер через веб-сервер | Компьютер пользователя |
| ⚙️ Кластер серверов 1С | Агент, менеджер кластера, рабочие процессы | Один или несколько серверов |
| 🗄️ СУБД | MS SQL Server, PostgreSQL, IBM Db2, Oracle | Тот же или отдельный сервер |
Тонкий клиент почти ничего не считает сам. Он показывает формы и выполняет код с директивой &НаКлиенте. Всё, что помечено &НаСервере, запросы и запись документов выполняются в рабочем процессе кластера. Рабочий процесс сам формирует SQL-запросы к СУБД и возвращает клиенту только результат.
Поэтому серверный вариант хорошо переносит медленный канал: по сети между клиентом и сервером идут вызовы и данные форм, а не страницы файла базы. В файловом режиме каждый клиент читает файл по сети сам, и при 10–15 одновременных пользователях это обычно становится узким местом.
Чем серверный вариант отличается от файлового
| Параметр | Файловый вариант | Клиент-серверный вариант |
|---|---|---|
| Где данные | Файл 1Cv8.1CD в папке | Таблицы в СУБД |
| Кто выполняет серверный код | Сам клиент (эмуляция сервера) | Рабочие процессы кластера |
| Блокировки | На уровне всей таблицы | Управляемые, на уровне записей |
| Масштабирование | Практически нет | Несколько рабочих процессов и серверов |
| Резервное копирование | Копия файла или выгрузка .dt | Средства СУБД без остановки работы |
| Лицензии | Клиентские | Клиентские + лицензия на сервер |
Переход с файла на сервер не требует переделки конфигурации. Базу выгружают в .dt из Конфигуратора, создают новую базу на кластере и загружают туда выгрузку.
Процессы кластера серверов 1С и их порты
На сервере после установки работает служба «Агент сервера 1С:Предприятия 8.3». Она запускает остальные процессы. Их три типа:
- 🧭
ragent— агент сервера. Слушает порт 1540. Хранит список кластеров на этом компьютере, принимает команды администрирования и первичные обращения клиентов. - 📋
rmngr— менеджер кластера. Порт кластера по умолчанию 1541. Ведёт реестр информационных баз, сеансов, соединений и распределяет нагрузку между рабочими процессами. В кластере может быть несколько менеджеров, каждый отвечает за свои сервисы. - 🔧
rphost— рабочие процессы. Используют диапазон портов, по умолчанию 1560–1591. Именно здесь выполняется код конфигурации и открываются соединения с СУБД.
Путь запроса выглядит так: клиент обращается к агенту на 1540, агент сообщает адрес менеджера кластера (1541), менеджер назначает рабочий процесс, и дальше клиент работает с выбранным rphost по порту из диапазона.
Если на сервере включён брандмауэр, открывать нужно все три группы портов: 1540, 1541 и весь диапазон рабочих процессов. Частая ошибка — открыть только 1540–1541. Тогда список баз виден, а подключение обрывается с ошибкой сетевого доступа.
Диапазон портов рабочих процессов задаётся в свойствах рабочего сервера в консоли кластера. Там же настраивают число баз и соединений на один процесс, лимиты памяти рабочих процессов и требования назначения функциональности.
Где лежат служебные файлы
Каталог данных кластера по умолчанию — C:\Program Files\1cv8\srvinfo. Внутри:
1cv8wsrv.lst— список кластеров этого агента;- папка
reg_1541— реестр кластера с портом 1541: файл1CV8Clst.lstсо списком баз и настроек; - папки
snccntx…внутриreg_1541— сеансовые данные и кэш.
Файлы 1CV8Clst.lst и 1cv8wsrv.lst не удаляйте и не правьте вручную — это реестр кластера, без него сервер «забудет» все базы. Перед любыми работами с srvinfo скопируйте каталог целиком.
На Linux каталог данных по умолчанию находится в домашней папке пользователя службы (обычно /home/usr1cv8/.1cv8/1C/1cv8), структура та же.
Как СУБД участвует в работе серверной 1С
СУБД в этой схеме — хранилище. Конфигурация, данные, история и служебные таблицы лежат в одной базе данных СУБД. Каждая информационная база 1С соответствует одной базе на SQL-сервере.
Что делает СУБД:
- Хранит таблицы и индексы, которые 1С создаёт сама при реструктуризации.
- Выполняет SQL-запросы, сформированные рабочим процессом из языка запросов 1С.
- Держит транзакции и блокировки на уровне СУБД.
- Даёт средства резервного копирования: полные, разностные копии, журнал транзакций.
Чего СУБД не делает: она не знает о документах, проводках и правах 1С. Права проверяет кластер. Поэтому смотреть или менять данные 1С напрямую SQL-запросами нельзя — это ломает целостность и нарушает лицензионное соглашение.
| СУБД | На что обратить внимание |
|---|---|
| MS SQL Server | Самый распространённый вариант на Windows. Режим восстановления Simple или Full выбирают под схему бэкапа |
| PostgreSQL | Нужна сборка с патчами для 1С (от фирмы 1С или Postgres Pro). Обычная сборка без патчей не подходит |
| IBM Db2, Oracle | Встречаются в крупных компаниях, требуют отдельного администратора |
При создании базы в консоли кластера указывают сервер СУБД, имя базы данных, пользователя СУБД и пароль. Флажок «Создать базу данных в случае её отсутствия» создаёт пустую базу на SQL-сервере автоматически, если у пользователя СУБД есть такие права.
Ставьте кластер 1С и СУБД в одну быструю сеть, лучше — на один сервер или соседние машины в одной стойке. Между rphost и СУБД идёт самый плотный трафик: задержка в 1 мс на каждом из тысяч мелких запросов складывается в секунды при проведении документа.
Консоль, RAS и rac: как управлять кластером
Кластер настраивают тремя способами.
1. Консоль «Администрирование серверов 1С Предприятия». Оснастка MMC для Windows. Ставится вместе с платформой, если отметить компонент администрирования. Подключается к агенту по порту 1540.
Если консоль открывается с ошибкой или пустая, почти всегда виноват незарегистрированный radmin.dll нужной версии. Регистрация из командной строки от администратора:
regsvr32 "C:\Program Files\1cv8\8.3.24.1586\bin\radmin.dll"
Номер версии в пути подставьте свой — он должен совпадать с версией сервера.
2. Сервер администрирования RAS (ras). Отдельный процесс, по умолчанию на порту 1545. Через него работают утилита rac, сторонние панели мониторинга и консоль на Linux. Установить RAS службой на Windows можно так:
sc create "1C:Enterprise 8.3 Remote Server" binPath= "\"C:\Program Files\1cv8\8.3.24.1586\bin\ras.exe\" cluster --service --port=1545 localhost:1540" start= auto DisplayName= "Сервер администрирования 1С 8.3"
3. Утилита командной строки rac. Обращается к RAS. Полезные команды:
rac localhost:1545 cluster list
rac localhost:1545 infobase summary list --cluster=<id кластера>
rac localhost:1545 session list --cluster=<id кластера>
Идентификатор кластера берут из вывода cluster list. Остальные режимы и параметры смотрите в rac help — у каждой подкоманды своя справка.
Если на кластере задан администратор, к командам rac добавляют --cluster-user и --cluster-pwd. Пароль в открытом виде попадает в историю командной строки — для скриптов заведите отдельную учётную запись.
Адрес кластера и подключение базы у пользователей
У пользователя база в списке добавляется вариантом «На сервере 1С:Предприятия». Заполняют два поля:
- Кластер серверов 1С:Предприятия — имя сервера, например
srv-1c. Если кластер работает не на стандартном порту, порт пишут через двоеточие:srv-1c:1641. - Имя информационной базы в кластере — имя, под которым база зарегистрирована в кластере, а не имя базы в SQL.
В файле списка баз и в ярлыках это выглядит как строка соединения:
Srvr="srv-1c";Ref="buh";
Для кластера с несколькими рабочими серверами допустимо перечислить адреса через запятую — клиент попробует следующий, если первый недоступен.
Что проверить, если база не подключается
Лицензии серверной 1С и ограничения на сеансы
Для серверного варианта нужны лицензии двух видов.
- Клиентские лицензии. Ограничивают число одновременных сеансов пользователей. Могут быть на рабочем месте или многопользовательские, установленные на сервере. Многопользовательские на сервере удобнее: их видят все клиенты кластера.
- Лицензия на сервер 1С:Предприятия. Без неё кластер не запустит сеансы. Есть варианты для 64-разрядного сервера и расширенная серверная лицензия КОРП. Для очень маленьких компаний выпускается сервер «МИНИ» с ограничением по числу подключений.
Как учитываются сеансы:
- 👤 Каждый открытый клиент — это сеанс, которому нужна клиентская лицензия.
- 🖥️ Фоновые и регламентные задания клиентскую лицензию не занимают.
- 🔁 Лицензия, полученная с сервера, расходуется на каждый сеанс: пользователь с двумя открытыми окнами 1С займёт две. Лицензия на рабочем месте позволяет открыть несколько сеансов с этого компьютера.
Посмотреть, какой сеанс держит какую лицензию:
rac localhost:1545 session list --cluster=<id кластера> --licenses
В консоли кластера то же видно в ветке «Сеансы» информационной базы: колонки с данными о лицензии показывают, откуда она получена.
Расширенная лицензия КОРП открывает часть механизмов управления кластером, которых нет в обычной: например, гибкие требования назначения функциональности и счётчики потребления ресурсов с ограничениями. Если вы не делите нагрузку между серверами вручную, обычной лицензии хватает.
Отключить зависший сеанс пользователя можно в консоли кластера: правой кнопкой по сеансу → удалить. Пользователь при этом потеряет несохранённые данные, поэтому сначала предупредите его.
Диагностика и мониторинг производительности кластера
Тормоза в серверной 1С ищут по звеньям: клиент → сеть → рабочий процесс → СУБД. Начинать стоит с самого простого.
Что смотреть в консоли кластера
- 📊 Рабочие процессы — занимаемая память, число соединений, «Доступная производительность». Процесс с аномально большой памятью — первый подозреваемый.
- 👥 Сеансы — у каждого сеанса видны время вызова, время в СУБД и число вызовов. Отсортируйте по времени вызова, и долгий отчёт или обработка найдутся сразу.
- 🔒 Блокировки — кто какие управляемые блокировки держит. Если пользователи жалуются на «зависания» при проведении, смотрите сюда.
Технологический журнал
Технологический журнал включается файлом logcfg.xml в каталоге conf платформы, например C:\Program Files\1cv8\conf\logcfg.xml. Платформа перечитывает файл без перезапуска. Пример настройки, которая собирает исключения, ожидания на блокировках и взаимоблокировки:
<?xml version="1.0" encoding="UTF-8"?>
<config xmlns="http://v8.1c.ru/v8/tech-log">
<log location="D:\techlog" history="24">
<event><eq property="name" value="EXCP"/></event>
<event><eq property="name" value="TLOCK"/></event>
<event><eq property="name" value="TTIMEOUT"/></event>
<event><eq property="name" value="TDEADLOCK"/></event>
</log>
</config>
Параметр history — сколько часов хранить журнал. Не оставляйте журнал с широким отбором включённым надолго: на нагруженном сервере он за сутки занимает десятки гигабайт и сам замедляет работу. Включили, собрали картину за час-два, выключили.
Счётчики операционной системы
На Windows через perfmon смотрят загрузку процессора, очередь диска и свободную память на сервере кластера и на сервере СУБД отдельно. Типичная картина: кластер 1С простаивает, а у SQL-сервера диск загружен на 100% — значит, проблема в СУБД или в запросах, а не в настройках кластера.
Очистка кэша сервера
Когда после обновления конфигурации у пользователей «прыгают» формы или появляются странные ошибки метаданных, помогает очистка сеансовых данных кластера:
- Предупредите пользователей: все сеансы будут разорваны. Делайте это вне рабочего времени.
- Остановите службу агента сервера 1С.
- Удалите папки
snccntx…внутриsrvinfo\reg_1541. Файлы.lstне трогайте. - Запустите службу.
Остановка службы агента обрывает работу всех пользователей и фоновых заданий на этом сервере. Незаписанные документы пропадут, а длительная операция вроде закрытия месяца прервётся.