Сервер 1С Предприятие изнутри: из каких процессов он состоит и как их настроить
Содержание
Сервер 1С Предприятия — это не одна программа, а набор процессов. Агент ragent стартует службу, менеджер кластера rmngr раздаёт работу, рабочие процессы rphost исполняют код конфигурации и ходят в СУБД. Клиент подключается к кластеру, а не к «серверу вообще».
Данные при этом хранит не 1С, а PostgreSQL, MS SQL Server или другая поддерживаемая СУБД. Сервер 1С держит бизнес-логику, сеансы, блокировки и кеши. Ниже — как эти части связаны и что в них можно крутить.
Из чего состоит кластер серверов 1С
Кластер — логическая единица, которая объединяет один или несколько рабочих серверов и обслуживает набор информационных баз. На небольшом предприятии это один физический сервер и один кластер. На крупном — несколько машин в одном кластере.
Основные участники:
- ⚙️ Агент сервера (
ragent) — служба, которую запускает операционная система. Она следит за кластерами на машине и поднимает остальные процессы. - 🧭 Менеджер кластера (
rmngr) — «диспетчер». Хранит список сеансов и баз, распределяет клиентов по рабочим процессам, управляет блокировками. - 🛠 Рабочий процесс (
rphost) — здесь выполняется серверный код конфигурации и идёт обмен с СУБД. Именно он «ест» память и процессор. - 🖥 Сервер администрирования (
ras) — по желанию. Через него консоль и утилитаracуправляют кластером.
Один рабочий сервер может быть одновременно главным (там живёт менеджер кластера, который считается «главным» в кластере) и обычным рабочим. В схеме с несколькими машинами главный менеджер остаётся один, а рабочих процессов становится больше.
Служба на Windows называется «Агент сервера 1С:Предприятия 8.3». Каталог служебных данных кластера обычно называют srvinfo: в нём лежит реестр кластера и подкаталоги баз. Копируйте его только при остановленной службе.
Что хранится в каталоге кластера
В srvinfo лежит список баз, настройки кластера, администраторы кластера и служебные данные сеансов. Сами таблицы базы — в СУБД. Потеряете каталог — потеряете регистрацию баз в кластере (но не данные), поэтому его включают в резервное копирование
наравне с серверной базой.
Как живёт рабочий процесс rphost
Рабочий процесс — расходный материал. Его запускают, нагружают, а затем перезапускают по расписанию или при превышении лимитов. Это нормальная часть работы кластера, а не авария.
Путь запроса пользователя:
- Клиент обращается к агенту, тот отдаёт адрес менеджера кластера.
- Менеджер находит или создаёт рабочий процесс и привязывает к нему сеанс.
- Дальше клиент общается напрямую с
rphost: вызовы серверных процедур, запросы, запись. - После завершения сеанса процесс освобождается и может обслужить следующих.
Один rphost способен обслуживать десятки сеансов. Сколько именно — решают настройки кластера.
Параметры, которые влияют на перезапуск
В свойствах рабочего сервера и кластера (консоль администрирования серверов 1С, раздел «Кластеры») есть несколько настроек, которые определяют судьбу процесса:
| Параметр | Что делает |
|---|---|
| Количество информационных баз на процесс | сколько баз может делить один rphost |
| Количество соединений на процесс | потолок сеансов на один процесс |
| Допустимый объём памяти | при превышении процесс помечается на завершение |
| Интервал перезапуска | периодическая перезагрузка процесса, чтобы не копилась «утечка» |
| Безопасный расход памяти за один вызов | защита от одного «тяжёлого» вызова |
Точные подписи полей немного различаются между версиями консоли, поэтому сверяйтесь с окном свойств именно вашей платформы.
Не ставьте интервал перезапуска в ноль без причины: процесс будет накапливать память неделями, и однажды сервер уйдёт в своп. Перезапуск раз в несколько часов при нормальной нагрузке безболезнен: сеансы переезжают, а активные вызовы процесс дорабатывает до конца.
Один процесс на базу или общий
Режим «много баз в одном процессе» экономит память, но сбой в одной базе заденет соседей. Для критичных баз (учёт, торговля) часто выделяют отдельные процессы, для мелких тестовых — делят один. Это решается значением «Количество информационных баз на процесс».
Как сервер 1С общается с СУБД
Рабочий процесс — единственный, кто говорит с СУБД. Клиент в базу напрямую не ходит. Конфигурация 1С формирует запрос на встроенном языке, rphost превращает его в SQL и отправляет на сервер баз данных.
Из этого следуют практические выводы:
- 🔗 Сервер 1С и СУБД лучше держать в одной быстрой сети. Задержка между ними умножается на тысячи обращений в минуту.
- 🧱 Блокировки данных — две ступени. Управляемые блокировки (которые видит и контролирует 1С) обслуживает менеджер кластера. Блокировки СУБД ставит сам SQL-сервер. Конфликт на любой из них даёт ожидание или ошибку.
- 📦 Одну базу 1С нельзя «разнести» по нескольким СУБД: она живёт в одной.
- 🧮 Размер памяти СУБД и памяти 1С конкурируют, если они на одной машине. Для PostgreSQL и MS SQL лимиты памяти задавайте явно, чтобы СУБД не вытеснила
rphostиз оперативки.
Если СУБД и сервер 1С на одной машине с 16 ГБ памяти, не отдавайте СУБД всё. Ориентир — оставить примерно четверть-треть под процессы 1С и операционную систему, потом смотреть по факту нагрузки.
Что сервер 1С держит у себя
Кеши метаданных и части данных, сеансовые данные, очередь регламентных заданий, журнал регистрации (хранится в файлах базы). Поэтому после перезапуска кластера первый вход в базу идёт медленнее: кеш холодный.
Порты и сетевое взаимодействие
Сервер 1С по умолчанию использует такие порты:
| Назначение | Порт по умолчанию |
|---|---|
Агент сервера (ragent) | 1540 |
Главный менеджер кластера (rmngr) | 1541 |
Диапазон рабочих процессов (rphost) | 1560–1591 |
Сервер администрирования (ras) | 1545 |
Это значения по умолчанию, их можно изменить при запуске службы и в настройках рабочих серверов.
Что нужно открыть в брандмауэре, если клиенты в другой сети:
- Порт агента и порт менеджера кластера.
- Весь диапазон рабочих процессов — клиент после первого обращения идёт напрямую в
rphost. - Порт СУБД между сервером 1С и сервером баз (для PostgreSQL по умолчанию 5432, для MS SQL Server — 1433). С клиентских машин его открывать не нужно.
Типичная ошибка: открыли только 1540 и 1541, а диапазон рабочих процессов закрыт. Клиент подключается к кластеру, но сеанс не открывается или обрывается. Проверка простая: с клиента выполните проверку порта (Test-NetConnection в PowerShell) для 1540, 1541 и любого порта из диапазона 1560–1591.
Хотите вынести администрирование отдельно — поднимайте ras и подключайтесь консолью или rac. Не открывайте порт ras наружу: он даёт управление кластером.
Подключение клиентов
Тонкий и толстый клиент указывают адрес в формате имя_сервера:порт_агента и имя базы. Если порт по умолчанию, достаточно имени сервера. Веб-клиент и HTTP-сервисы идут через веб-сервер (IIS, Apache), а он уже обращается к кластеру теми же портами.
rphost по лимиту памяти. В журнале регистрации и технологическом журнале будут записи о завершении процесса.Как понять, что сервер перегружен
Жалоба «1С тормозит» ничего не говорит. Нужно найти узкое место: процессор, память, диск, СУБД или блокировки.
Порядок проверки:
- Диспетчер задач или
htop. Посмотрите, какой процесс занимает процессор:rphostили процесс СУБД. Это сразу делит проблему на «код 1С» и «запросы/диск». - Консоль кластера. В списке рабочих процессов видно память, число соединений и нагрузку каждого. Один процесс раздулся — ищите тяжёлый сеанс. Все равномерно загружены — не хватает ресурсов.
- Сеансы и блокировки. В консоли у каждого сеанса есть текущий вызов и время его выполнения. Долгие вызовы — кандидаты на оптимизацию.
- Замер производительности. В платформе есть встроенный механизм замеров ключевых операций. Он показывает, какая операция стала медленнее и насколько.
- Технологический журнал. Настраивается файлом
logcfg.xmlв каталогеconfплатформы. Пишет события вплоть до отдельных запросов, ожиданий на блокировках и исключений.
Технологический журнал с широким отбором событий быстро разрастается и сам грузит диск. Включайте точечно (нужные события, нужная база) и на короткое время, потом убирайте настройку и чистите каталог.
Какие признаки о чём говорят
- 🔥
rphostна 100% процессора при низкой нагрузке СУБД — тяжёлый серверный код или цикл по записям в 1С. - 💾 Высокая нагрузка СУБД и очередь к диску — медленные запросы, нет индексов, мало памяти у СУБД.
- ⏳ Процессор свободен, а пользователи ждут — смотрите блокировки: управляемые и на уровне СУБД.
- 📈 Память
rphostрастёт между перезапусками — проверьте интервал перезапуска и допустимый объём.
Для крупных систем есть отдельный продукт «Центр управления производительностью», он собирает такую статистику постоянно. Для небольшой базы хватает консоли кластера и замера.
Настройка сервера 1С под вашу нагрузку
Универсальных цифр нет: всё зависит от числа пользователей, фоновых заданий и объёма данных. Но порядок действий один.
Что проверить перед началом
- Резервная копия каталога кластера и баз.
- Окно работ, когда пользователей нет: часть настроек вступает в силу после перезапуска процессов.
- Текущая картина нагрузки: сколько сеансов в пике, сколько памяти занимает каждый
rphost.
Рабочие шаги
- Определите, сколько сеансов приходится на один процесс сейчас. Если один процесс держит сотни соединений, нагрузка не масштабируется.
- Задайте разумное количество соединений на процесс, чтобы процессов было несколько, но не десятки. Обычно начинают с умеренного значения и корректируют по замерам.
- Установите допустимый объём памяти рабочего процесса так, чтобы суммарно по всем процессам он не превышал свободную оперативную память.
- Поставьте периодический перезапуск (например, раз в несколько часов, ночью — чаще не нужно).
- Отделите тяжёлые регламентные задания: их можно вынести на отдельный рабочий сервер или отдельную базу.
- Через неделю сравните замеры с исходными.
Пример прикидки по памяти. Сервер с 32 ГБ, из них 12 ГБ отдаём PostgreSQL, 4 ГБ — системе. На 1С остаётся 16 ГБ. Если рабочих процессов четыре, на каждый можно планировать не более 4 ГБ. Если процесс регулярно упирается в лимит, это сигнал искать причину в коде, а не просто поднимать цифру.
Когда нужен второй сервер
Один сервер перестаёт хватать, когда процессор или память упираются в потолок даже после настройки. Тогда в кластер добавляют второй рабочий сервер: клиенты распределяются по двум машинам. Менеджер кластера остаётся один главный, но рабочих процессов больше.
Сначала оптимизируйте узкие места в коде и индексы СУБД, потом покупайте железо. Один медленный запрос способен «съесть» мощность целого сервера.