Как устроен сервер 1С:Предприятия и чем он отличается от СУБД

· 10 мин

Содержание

Сервер приложений 1С — это служба ragent.exe («Агент сервера 1С:Предприятия 8.3»), которая выполняет серверный код конфигурации и посредником стоит между пользователями и СУБД. Клиент 1С не ходит в базу данных напрямую: он отправляет вызов серверу приложений, тот формирует запрос к MS SQL или PostgreSQL, обрабатывает результат и возвращает клиенту уже готовые данные.

Типичная ситуация: в файловой базе работают 10 бухгалтеров, закрытие месяца идёт час, а при одновременном проведении документов программа ругается на блокировки. Переход на клиент-серверный вариант с сервером приложений обычно и есть ответ на этот рост. Ниже про то, как он устроен, что умеет и что с ним делает администратор.

Как устроен клиент-серверный вариант 1С

В клиент-серверном варианте работают три звена. Каждое можно поставить на отдельную машину, а для небольшой фирмы все три иногда живут на одном сервере.

ЗвеноЧто этоГде обычно стоит
КлиентТонкий клиент, толстый клиент или веб-клиент через браузерРабочие места, ноутбуки
Сервер приложенийКластер серверов 1С: агент, менеджер кластера, рабочие процессыОтдельный сервер Windows или Linux
Сервер СУБДMS SQL Server, PostgreSQL, IBM Db2 или Oracle DatabaseТот же или отдельный сервер

Сервер приложений состоит из трёх типов процессов:

  • 🟢 ragent — агент сервера. Принимает первое подключение клиента и консоли администрирования, по умолчанию на порту 1540.
  • 🔵 rmngr — менеджер кластера. Хранит реестр кластера, распределяет клиентов по рабочим процессам, ведёт журнал регистрации. Порт по умолчанию 1541.
  • 🟠 rphost — рабочие процессы. Именно они выполняют код модулей, запросы и проведение документов. Получают порты из диапазона, по умолчанию 1560–1591.

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

Если порты по умолчанию заняты, второй экземпляр сервера ставят со сдвигом: например, агент на 2540, менеджер на 2541, диапазон 2560–2591. В строке подключения базы тогда указывают сервер с портом: srv1c:2541.

Служебные файлы кластера лежат в каталоге srvinfo. В Windows при установке как службы это обычно C:\Program Files\1cv8\srvinfo. Внутри папка reg_1541 с реестром кластера (1CV8Clst.lst), журналами регистрации баз и кэшем сеансовых данных.

Что делает сервер приложений 1С и зачем он нужен

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

  • 📌 Выполнение серверного кода. Всё, что в модулях помечено &НаСервере, общие модули с флагом «Сервер», проведение документов, расчёт отчётов.
  • 📌 Трансляция запросов. Запрос на языке 1С сервер переводит в SQL конкретной СУБД. Разработчик пишет один запрос, а он работает и на MS SQL, и на PostgreSQL.
  • 📌 Управляемые блокировки. Менеджер блокировок сервера следит, чтобы два пользователя не изменили одни и те же данные одновременно.
  • 📌 Сеансы и лицензии. Сервер учитывает, кто подключён, и выдаёт клиентские лицензии, если они установлены на сервере.
  • 📌 Регламентные и фоновые задания. Загрузка курсов валют, обмены, обновление полнотекстового индекса работают на сервере без открытого клиента.
  • 📌 Журнал регистрации всех баз кластера.
  • 📌 Кэширование. Сеансовые данные, кэш конфигурации и метаданных хранятся на сервере и ускоряют повторные вызовы.

Для пользователя разница с файловым вариантом заметна сразу. Отчёт по большой базе строится быстрее, потому что данные не гоняются по сети к каждому клиенту. Одновременное проведение не упирается в блокировку всего файла 1Cv8.1CD. Плюс можно работать через интернет тонким клиентом без проброса общей папки.

Нужен ли вам сервер приложений?

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

Сервер приложений 1С всегда работает как кластер, даже если в нём одна машина. Кластер — это группа рабочих серверов, которая обслуживает список информационных баз.

Из чего состоит кластер

  • Центральный сервер — тот, где работает агент и менеджер кластера, хранится реестр. Их может быть несколько для резервирования.
  • Рабочие серверы — машины, на которых запускаются rphost. Центральный сервер тоже обычно является рабочим.
  • Информационные базы — зарегистрированные в кластере базы. Каждая указывает на свою базу в СУБД.

Как распределяется нагрузка

Менеджер кластера направляет новое соединение в рабочий процесс с наибольшей доступной производительностью. Это число он считает по времени ответа процесса на эталонные вызовы. В свойствах кластера выбирают режим распределения нагрузки: приоритет по производительности или приоритет по памяти.

В свойствах рабочего сервера задают параметры, которые сильнее всего влияют на поведение:

ПараметрЧто регулируетОриентир
Количество ИБ на процессСколько баз обслуживает один rphost0 — без ограничения; 1–8 — если много баз и нужна изоляция
Количество соединений на процессСколько клиентов в одном rphostПо умолчанию 128
Критический объём памяти процессовПорог, при котором сервер начинает разрывать соединенияНиже объёма ОЗУ, отданного 1С, с запасом для СУБД
Временно допустимый объём памяти процессовПорог, после которого «тяжёлый» процесс перезапускаетсяПримерно 70–80% от доступной 1С памяти
Диапазон IP-портовПорты рабочих процессов1560:1591

Назначение функциональности

В кластере с несколькими серверами можно указать, что конкретный сервер обслуживает. Например, фоновые и регламентные задания определённой базы выполнять только на втором сервере, чтобы ночной обмен не тормозил пользователей. Это делают через требования назначения функциональности в свойствах рабочего сервера. Полноценно механизм работает с лицензией КОРП.

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

Чем сервер приложений отличается от сервера СУБД и клиента

Путаница возникает из-за слова «сервер». В разговоре «сервер 1С» может означать и машину, и службу, и СУБД. Разведём понятия.

Сервер приложений 1ССервер СУБДКлиент 1С
Программаragent, rmngr, rphostMS SQL Server, PostgreSQL и др.1cv8c.exe (тонкий), 1cv8.exe (толстый), браузер
Что хранитРеестр кластера, журналы, кэшСами данные: таблицы, индексыЛокальный кэш метаданных и настроек
Что выполняетКод конфигурации, блокировки, запросыSQL-запросы, транзакции, бэкап данныхИнтерфейс, клиентский код форм
ЛицензияЛицензия на сервер 1СЛицензия СУБД (PostgreSQL бесплатна)Клиентская лицензия 1С на пользователя

Пара практических следствий:

  1. Резервную копию делают на уровне СУБД. Сервер 1С данных не хранит, поэтому копия его каталога srvinfo базу не сохранит. Бэкап — средствами MS SQL или pg_dump, плюс периодическая выгрузка в .dt.
  2. Сервер приложений и СУБД можно разнести. Для 50+ пользователей это частая схема: 1С на одной машине, база данных на другой, между ними быстрая сеть.
  3. Веб-сервер — отдельное звено. Для веб-клиента и HTTP-сервисов нужна публикация базы на IIS или Apache. Сам сервер приложений веб-страницы не отдаёт.

Настройка сервера 1С после установки

Порядок первичной настройки, если дистрибутив сервера уже установлен как служба.

Шаг 1. Проверьте службу

Откройте services.msc и найдите «Агент сервера 1С:Предприятия 8.3». Состояние — «Выполняется», тип запуска — «Автоматически». Учётная запись по умолчанию USR1CV8: ей нужны права на каталог srvinfo.

Шаг 2. Зарегистрируйте консоль администрирования

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

regsvr32 "C:\Program Files\1cv8\8.3.25.1374\bin\radmin.dll"

Номер версии в пути подставьте свой. После обновления платформы регистрацию повторяют, иначе консоль не подключится к серверу новой версии.

Шаг 3. Задайте администратора кластера

В консоли добавьте центральный сервер по имени машины, раскройте кластер и в разделе «Администраторы» создайте учётную запись. Пока администраторов нет, управлять кластером может любой, кто дошёл до порта 1540.

Шаг 4. Создайте или зарегистрируйте базу

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

Шаг 5. Добавьте базу пользователям

В окне запуска 1С: Добавить → Добавление в список существующей информационной базы → На сервере 1С:Предприятия. Указываете кластер (srv1c или srv1c:1541) и имя базы в кластере.

Управление из командной строки

Для скриптов и Linux используют сервер администрирования ras и утилиту rac. Пример для Windows:

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

Первая команда запускает сервер администрирования, вторая показывает кластеры и их идентификаторы, третья — сеансы с выданными лицензиями. Остальные команды смотрите в справке rac help.

Мониторинг и диагностика производительности сервера 1С

Когда пользователи говорят «1С тормозит», первым делом смотрят на сервер приложений и СУБД одновременно. Проблема может быть в любом из звеньев.

Что смотреть в консоли кластера

  • 📊 Рабочие процессы: занятая память, доступная производительность, среднее время обслуживания вызова. Процесс, у которого память растёт без остановки, — кандидат на утечку в коде.
  • 👥 Сеансы: кто подключён, к какой базе, сколько времени идёт текущий вызов. Долгий вызов у одного пользователя часто объясняет ожидание у остальных.
  • 🔒 Блокировки: кто кого держит. Видно, на каких объектах столкнулись пользователи.
  • ⚙️ Фоновые задания: не висит ли обмен или обновление индекса с утра.

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

Для точной диагностики включают технологический журнал. Это файл logcfg.xml в каталоге conf платформы, например C:\Program Files\1cv8\conf. В нём описывают, какие события собирать: долгие запросы, взаимоблокировки, исключения. Сервер подхватывает файл без перезапуска.

<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>
  </log>
</config>

Журнал без фильтров за час может занять десятки гигабайт и сам нагрузить диск. Собирайте только нужные события, на отдельный диск и с ограничением history — это число часов хранения.

Счётчики операционной системы

Параллельно смотрите стандартные метрики: загрузку процессора по rphost, свободную память, очередь диска на томе с базой. Если тормозит СУБД, это видно по её собственным средствам: в MS SQL — монитор активности, в PostgreSQL — представление pg_stat_activity.

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

Лицензии и ограничения сервера приложений 1С

Сервер 1С лицензируется отдельно от клиентских рабочих мест. Без лицензии на сервер клиент-серверная база не запустится. Клиентские лицензии нужны в любом случае, по числу одновременных подключений.

ВариантДля когоОриентир цены
Сервер МИНИНебольшие команды, до 5 подключенийПримерно 10–15 тыс. ₽
Сервер (x86-64)Основной вариант для фирм от 5–10 человекПримерно 90–100 тыс. ₽
Сервер КОРП (x86-64)Крупные внедрения, кластер из нескольких серверовПримерно в 2,5–3 раза дороже обычного

Цены ориентировочные, точную стоимость уточняйте у партнёра 1С.

Что даёт КОРП сверх обычной лицензии:

  • 🛡️ отказоустойчивый кластер с резервированием центральных серверов;
  • 🎯 полноценные требования назначения функциональности;
  • 📈 расширенные средства управления нагрузкой для больших кластеров.

Важные ограничения:

  1. Лицензия на сервер привязывается к машине. Замена процессора, материнской платы или переустановка системы может сбросить программную лицензию, и её придётся активировать заново пин-кодом из комплекта.
  2. Клиентские лицензии можно установить на сервер. Тогда сервер выдаёт их всем подключённым, и не нужно держать ключ на каждом компьютере.
  3. Версия платформы сервера и клиента должна совпадать: клиент версии 8.3.25 не подключится к серверу 8.3.24.

Сколько лицензий реально занято, покажет команда rac session list --licenses или раздел сеансов в консоли кластера. Удобно перед докупкой рабочих мест.

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

Можно ли поставить сервер 1С и СУБД на одну машину?
Да. Для 10–30 пользователей это обычная схема. Главное, распределить память: часть отдать СУБД, часть рабочим процессам 1С, и не дать им конкурировать.
Работает ли сервер приложений 1С на Linux?
Да, дистрибутивы сервера есть для Linux. Чаще всего в паре с PostgreSQL. Управляют таким сервером через ras и rac или с Windows-консоли по сети.
Нужно ли перезапускать сервер после обновления конфигурации?
Нет. Обновление конфигурации базы выполняют в Конфигураторе, служба продолжает работать. Перезапуск нужен при обновлении самой платформы сервера.
Что делать, если забыт пароль администратора кластера?
Остановите службу вне рабочего времени и восстановите файл реестра кластера из резервной копии, сделанной до смены пароля. Или обратитесь к администратору, который настраивал сервер.
Можно ли запустить несколько версий сервера 1С на одной машине?
Можно. Каждую версию ставят отдельной службой на свои порты, например 1540 и 2540, со своим каталогом srvinfo.