Клиент-серверная 1С изнутри: кто кого вызывает и где что настраивать

· 10 мин

Содержание

В серверном варианте 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. Хранит таблицы и индексы, которые 1С создаёт сама при реструктуризации.
  2. Выполняет SQL-запросы, сформированные рабочим процессом из языка запросов 1С.
  3. Держит транзакции и блокировки на уровне СУБД.
  4. Даёт средства резервного копирования: полные, разностные копии, журнал транзакций.

Чего СУБД не делает: она не знает о документах, проводках и правах 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. Клиентские лицензии. Ограничивают число одновременных сеансов пользователей. Могут быть на рабочем месте или многопользовательские, установленные на сервере. Многопользовательские на сервере удобнее: их видят все клиенты кластера.
  2. Лицензия на сервер 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С тормозит
Выполнено: 0 / 6

Очистка кэша сервера

Когда после обновления конфигурации у пользователей «прыгают» формы или появляются странные ошибки метаданных, помогает очистка сеансовых данных кластера:

  1. Предупредите пользователей: все сеансы будут разорваны. Делайте это вне рабочего времени.
  2. Остановите службу агента сервера 1С.
  3. Удалите папки snccntx… внутри srvinfo\reg_1541. Файлы .lst не трогайте.
  4. Запустите службу.

Остановка службы агента обрывает работу всех пользователей и фоновых заданий на этом сервере. Незаписанные документы пропадут, а длительная операция вроде закрытия месяца прервётся.

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

Сколько пользователей нужно, чтобы переходить на серверный вариант?
Ориентир — от 10 одновременных пользователей или база больше 5–10 ГБ. Раньше переходят, если нужен доступ из филиалов или бэкап без остановки работы.
Можно ли поставить кластер 1С и СУБД на один сервер?
Да, для небольших компаний это обычная схема. Выделите СУБД ограничение памяти, чтобы она не забрала всю оперативную память у рабочих процессов 1С.
Нужен ли веб-сервер для серверного варианта?
Нет. Тонкий клиент работает с кластером напрямую. Веб-сервер (IIS или Apache) нужен только для работы через браузер, HTTP-сервисов и подключения через интернет без VPN.
Обязательно ли ставить на клиенты ту же версию платформы?
Да, версия клиента должна совпадать с версией сервера полностью. Проще всего обновлять сервер и клиентов одновременно.
Работает ли сервер 1С на Linux?
Да, кластер 1С 8.3 работает на Linux, с PostgreSQL это популярная схема. Пользователи при этом могут оставаться на Windows-клиентах.