Серверная 1С изнутри: агент, менеджер, рабочие процессы и СУБД
Содержание
Сервер 1С Предприятия состоит из трёх уровней: агент сервера (ragent), менеджер кластера (rmngr) и рабочие процессы (rphost). Клиент подключается к агенту, менеджер решает, какой рабочий процесс его обслужит, а сам процесс выполняет код и ходит в СУБД. Всё остальное, от ras до настроек перезапуска, надстройки над этой цепочкой.
Если знать, кто за что отвечает, диагностика упрощается. Тормозит один сеанс или все сразу? Падает процесс или не отвечает менеджер? Ответ на такие вопросы лежит в устройстве кластера.
Ниже разбор по порядку: от схемы кластера до логов. Порты и имена параметров приведены для платформы 8.3. В конкретном релизе мелочи могут отличаться, поэтому сверяйтесь с документацией своей версии.
Из чего состоит кластер серверов 1С
Кластер серверов 1С — это логическая группа процессов, которая обслуживает набор информационных баз. Один кластер может работать на одном физическом сервере или на нескольких.
Основные составляющие:
- 🧭 Агент сервера — процесс
ragent. Он запускается как служба ОС, держит список кластеров на этой машине и принимает входящие подключения. - 🗂 Менеджер кластера — процесс
rmngr. Хранит состояние кластера и распределяет нагрузку. - ⚙️ Рабочие процессы —
rphost. Именно они исполняют серверный код, работают с запросами и держат пользовательские сеансы. - 🖥 Сервер администрирования —
ras. Отдельная служба для удалённого управления через утилитуracили консоль.
Порты по умолчанию, которые обычно приходится открывать в файрволе:
| Компонент | Порт по умолчанию | Назначение |
|---|---|---|
| Агент сервера | 1540 | Первое подключение клиентов и консоли |
| Главный менеджер кластера | 1541 | Работа клиентов с менеджером |
| Диапазон рабочих процессов | 1560–1591 | Подключение к rphost |
| Сервер администрирования | 1545 | Удалённое управление через ras |
Диапазон портов для рабочих процессов задаётся параметром запуска агента. Если на сервере десятки процессов, стандартных 32 портов может не хватить.
Данные кластера (список баз, настройки, реестр) лежат в каталоге, который указан при запуске службы ключом -d. Обычно его называют srvinfo. Этот каталог входит в обязательный набор для резервной копии сервера, а потерять его значит потерять описание баз в кластере.
Что делает каждый процесс: ragent, rmngr, rphost, ras
Агент сервера ragent
Агент запускается первым и стартует всё остальное. Он создаёт менеджер кластера, следит за ним и перезапускает, если тот упал. Когда клиент стучится на порт 1540, отвечает именно агент.
Менеджер кластера rmngr
Менеджер — диспетчер. Он знает, сколько рабочих процессов запущено, какая у них загрузка и на каком процессе лежит нужный сеанс. Через него идёт:
- распределение новых подключений по рабочим процессам;
- учёт лицензий и сеансов;
- хранение блокировок, которые 1С ставит на уровне платформы;
- взаимодействие с консолью администрирования.
Главный менеджер в кластере один. В крупных схемах добавляют дополнительные менеджеры и раскладывают по ним сервисы.
Рабочий процесс rphost
Вся пользовательская работа происходит здесь. Процесс исполняет серверный код 1С, формирует запросы к СУБД, обрабатывает данные. Если rphost падает, пользователи на нём теряют сеансы, а остальные процессы продолжают работать. Поэтому в кластере держат несколько рабочих процессов, а не один.
Сервер администрирования ras
ras сам ничего не считает. Это прослойка, которая принимает команды управления и передаёт их агенту. Запуск простой:
ras cluster --port=1545 localhost:1540
Дальше к нему подключаются утилитой rac:
rac localhost:1545 cluster list
Команда покажет идентификатор кластера. Он нужен для всех следующих запросов, например для списка баз или сеансов.
ras без ограничений доступа открывает управление кластером всем, кто достучится до порта 1545. Закройте его файрволом и не публикуйте наружу.
Как проходит сеанс пользователя: от клиента до рабочего процесса
Понимание цепочки помогает искать причину «подвисаний». Работает так:
- Клиент (толстый, тонкий или веб) обращается к серверу по адресу вида
имя_сервера:1541или через агент на1540. - Агент отдаёт клиента менеджеру кластера.
- Менеджер проверяет, что база доступна, а лицензия есть, и создаёт соединение.
- Менеджер выбирает рабочий процесс по загрузке и назначает его клиенту.
- Дальше клиент общается с этим
rphostнапрямую. Менеджер в каждом вызове уже не участвует.
Здесь два разных понятия, которые часто путают. Соединение — это канал между клиентом и рабочим процессом. Сеанс — это логическая сессия пользователя в базе, внутри которой выполняются вызовы. Один пользователь может держать несколько соединений, а фоновые задания создают собственные сеансы.
Что происходит при вызове сервера:
- клиент передаёт процессу команду, например проведение документа;
rphostвыполняет код, собирает запросы и отправляет их в СУБД;- результат возвращается клиенту, а вызов фиксируется в счётчиках процесса.
Когда процесс «раздувается» по памяти, менеджер не может перенести сеанс на другой процесс. Сеанс привязан к rphost, пока не завершится. Эту особенность нужно учитывать при настройке перезапусков, о них ниже.
Фоновые и регламентные задания тоже идут через рабочие процессы. Ночные закрытия месяца, обмены и перепроведение конкурируют с пользователями за ресурсы одного кластера, если их не развести по времени или по серверам.
Как сервер 1С работает с СУБД
Рабочий процесс не хранит данные сам. Все чтения и записи уходят в СУБД: PostgreSQL, Microsoft SQL Server, IBM Db2 или Oracle. Сервер 1С переводит запрос на языке 1С в SQL и отправляет его через драйвер.
Из этого следуют практические выводы:
- 🔌 Между
rphostи СУБД идёт интенсивный сетевой обмен. Держите их в одной быстрой сети, лучше в одном дата-центре. - 🧱 Сервер 1С и СУБД можно установить на одну машину или на разные. Для небольшой базы на 10–20 пользователей хватает одного сервера. Для нагруженных систем СУБД выносят отдельно, чтобы они не делили память.
- 🔒 Параллельность работы ограничена блокировками. Платформа ставит собственные управляемые блокировки в менеджере, а СУБД держит свои на уровне строк и страниц.
Типичная картина проблемы: пользователи жалуются на медленную работу, а rphost почти не загружает процессор. Причина часто в ожидании СУБД или в блокировках, а не в самом сервере 1С.
Что проверить на стороне СУБД в первую очередь:
| Симптом | Где искать причину |
|---|---|
| Долго выполняется один запрос | План запроса, индексы, актуальность статистики |
| Все пользователи ждут | Длинная транзакция, блокировки, нехватка памяти СУБД |
| Рост времени по вечерам | Фоновые задания, резервное копирование, обслуживание индексов |
Регулярно обновляйте статистику и обслуживайте индексы на стороне СУБД. Часть «тормозов 1С» исчезает без единого изменения в кластере.
Настройка кластера и параметров рабочих процессов
Настройки кластера открываются в консоли администрирования серверов 1С. Откройте нужный кластер, выберите его свойства и посмотрите параметры. Для рабочих серверов зайдите в раздел «Рабочие серверы» и откройте свойства нужного сервера.
Что стоит знать о ключевых параметрах:
- Интервал перезапуска рабочих процессов. Периодическое перезапускание защищает от утечек памяти. Значение в часах подбирают по нагрузке, у многих внедрений оно составляет несколько часов, в крупных системах чаще. Ноль отключает перезапуск.
- Допустимый объём памяти рабочих процессов. Когда процесс превышает порог, менеджер помечает его на завершение и создаёт новый.
- Интервал превышения допустимого объёма памяти. Сколько времени процессу позволено работать выше порога, прежде чем его завершат.
- Максимальное число соединений и информационных баз на процесс. Определяют, насколько плотно сеансы упаковываются на один
rphost. - Безопасное потребление памяти за один вызов. Защита от вызова, который съедает всю память разом.
Пример расчёта. На сервере 64 ГБ оперативной памяти, из них под ОС и СУБД на этом же сервере оставляют 24 ГБ. На рабочие процессы остаётся 40 ГБ. Если запланировать четыре рабочих процесса, на каждый приходится примерно 10 ГБ. Допустимый объём памяти ставят чуть ниже, чтобы запас был при пике.
Порядок аккуратной настройки:
- Снимите текущие значения и запишите их.
- Измените один параметр.
- Понаблюдайте нагрузку хотя бы сутки.
- Только после этого меняйте следующий.
Не правьте несколько параметров одновременно в рабочем кластере. Иначе непонятно, что дало эффект, а что ухудшило ситуацию.
Для автоматизации используйте rac. Например, список рабочих процессов выводит такая команда с идентификатором кластера:
rac localhost:1545 process list --cluster=<идентификатор_кластера>
Подставьте свой идентификатор, который вернула команда cluster list. По выводу видно, сколько памяти занимает каждый процесс и сколько у него соединений.
Масштабирование: несколько серверов и рабочих процессов
Когда один сервер не справляется, есть два пути: добавить ресурсов или добавить серверов в кластер.
Что выбирать:
- 📈 Вертикально. Больше памяти, быстрее диски, больше ядер. Просто, но у платформы и железа есть потолок.
- 🧩 Горизонтально. Второй рабочий сервер в том же кластере. Часть сеансов уходит на него. Сложнее в настройке, зато нагрузка делится.
Распределением управляют через требования назначения функциональности. Они определяют, какой сервер обслуживает какие операции: например, один сервер берёт фоновые задания, а второй — интерактивные сеансы.
Типовая схема для среднего предприятия:
| Роль | Что размещаем |
|---|---|
| Сервер 1С №1 | Интерактивная работа пользователей |
| Сервер 1С №2 | Фоновые и регламентные задания, обмены |
| Отдельный сервер | СУБД |
Лицензии при этом считаются на кластер. Серверные лицензии на нужное число подключений необходимо проверить заранее, иначе новые сеансы встанут в очередь на подключение.
Проверяйте совместимость: платформа на всех серверах кластера должна быть одной версии. Разные версии в одном кластере не поддерживаются.
Диагностика: логи, журнал и технологический журнал
Когда что-то идёт не так, начните с трёх источников.
Журнал регистрации. Фиксирует действия пользователей и ошибки на уровне базы. Подходит для вопроса «кто и что сделал».
Журнал событий ОС. Показывает, что происходило со службой агента: падения, остановки, ошибки запуска.
Технологический журнал. Это самый подробный источник. Он пишет вызовы, блокировки, запросы к СУБД, исключения. Включается файлом logcfg.xml в каталоге conf платформы. Пример минимального файла:
<?xml version="1.0" encoding="UTF-8"?>
<config xmlns="http://v8.1c.ru/v8/tech-log">
<log location="C:\techlog" history="24">
<event>
<eq property="name" value="EXCP"/>
</event>
<property name="all"/>
</log>
</config>
Этот пример пишет только события исключений и хранит записи 24 часа. Путь к каталогу замените на свой, а владелец службы должен иметь права записи в него.
Как искать причину по симптому:
rmngr или ragent. В технологическом журнале ищите события блокировок и долгие вызовы к СУБД.process list. Процесс, который вышел за лимиты, нужно перезапустить. Подумайте над снижением числа соединений на процесс.EXCP и ищите повторяющееся исключение. Проверьте последние изменения в конфигурации и внешних компонентах, которые подключены на сервере.1540, 1541 и диапазона рабочих процессов. Убедитесь, что служба агента запущена и имя сервера резолвится.Технологический журнал сильно нагружает диск. Включайте его на короткое время с узким набором событий и выключайте после сбора данных.