Как устроен сервер 1С:Предприятия и чем он отличается от СУБД
Содержание
Сервер приложений 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. Центральный сервер тоже обычно является рабочим. - Информационные базы — зарегистрированные в кластере базы. Каждая указывает на свою базу в СУБД.
Как распределяется нагрузка
Менеджер кластера направляет новое соединение в рабочий процесс с наибольшей доступной производительностью. Это число он считает по времени ответа процесса на эталонные вызовы. В свойствах кластера выбирают режим распределения нагрузки: приоритет по производительности или приоритет по памяти.
В свойствах рабочего сервера задают параметры, которые сильнее всего влияют на поведение:
| Параметр | Что регулирует | Ориентир |
|---|---|---|
| Количество ИБ на процесс | Сколько баз обслуживает один rphost | 0 — без ограничения; 1–8 — если много баз и нужна изоляция |
| Количество соединений на процесс | Сколько клиентов в одном rphost | По умолчанию 128 |
| Критический объём памяти процессов | Порог, при котором сервер начинает разрывать соединения | Ниже объёма ОЗУ, отданного 1С, с запасом для СУБД |
| Временно допустимый объём памяти процессов | Порог, после которого «тяжёлый» процесс перезапускается | Примерно 70–80% от доступной 1С памяти |
| Диапазон IP-портов | Порты рабочих процессов | 1560:1591 |
Назначение функциональности
В кластере с несколькими серверами можно указать, что конкретный сервер обслуживает. Например, фоновые и регламентные задания определённой базы выполнять только на втором сервере, чтобы ночной обмен не тормозил пользователей. Это делают через требования назначения функциональности в свойствах рабочего сервера. Полноценно механизм работает с лицензией КОРП.
Перезапуск рабочих процессов и службы агента обрывает сеансы пользователей: несохранённые документы теряются. Любые изменения, которые требуют рестарта, делайте вне рабочего времени и предупреждайте людей заранее.
Чем сервер приложений отличается от сервера СУБД и клиента
Путаница возникает из-за слова «сервер». В разговоре «сервер 1С» может означать и машину, и службу, и СУБД. Разведём понятия.
| Сервер приложений 1С | Сервер СУБД | Клиент 1С | |
|---|---|---|---|
| Программа | ragent, rmngr, rphost | MS SQL Server, PostgreSQL и др. | 1cv8c.exe (тонкий), 1cv8.exe (толстый), браузер |
| Что хранит | Реестр кластера, журналы, кэш | Сами данные: таблицы, индексы | Локальный кэш метаданных и настроек |
| Что выполняет | Код конфигурации, блокировки, запросы | SQL-запросы, транзакции, бэкап данных | Интерфейс, клиентский код форм |
| Лицензия | Лицензия на сервер 1С | Лицензия СУБД (PostgreSQL бесплатна) | Клиентская лицензия 1С на пользователя |
Пара практических следствий:
- Резервную копию делают на уровне СУБД. Сервер 1С данных не хранит, поэтому копия его каталога
srvinfoбазу не сохранит. Бэкап — средствами MS SQL илиpg_dump, плюс периодическая выгрузка в.dt. - Сервер приложений и СУБД можно разнести. Для 50+ пользователей это частая схема: 1С на одной машине, база данных на другой, между ними быстрая сеть.
- Веб-сервер — отдельное звено. Для веб-клиента и 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С.
Что даёт КОРП сверх обычной лицензии:
- 🛡️ отказоустойчивый кластер с резервированием центральных серверов;
- 🎯 полноценные требования назначения функциональности;
- 📈 расширенные средства управления нагрузкой для больших кластеров.
Важные ограничения:
- Лицензия на сервер привязывается к машине. Замена процессора, материнской платы или переустановка системы может сбросить программную лицензию, и её придётся активировать заново пин-кодом из комплекта.
- Клиентские лицензии можно установить на сервер. Тогда сервер выдаёт их всем подключённым, и не нужно держать ключ на каждом компьютере.
- Версия платформы сервера и клиента должна совпадать: клиент версии 8.3.25 не подключится к серверу 8.3.24.
Сколько лицензий реально занято, покажет команда rac session list --licenses или раздел сеансов в консоли кластера. Удобно перед докупкой рабочих мест.
Частые вопросы
Можно ли поставить сервер 1С и СУБД на одну машину?
Работает ли сервер приложений 1С на Linux?
ras и rac или с Windows-консоли по сети.