Рабочий процесс rphost в кластере 1С: зачем он нужен и как им управлять
Содержание
РП хост 1С — это rphost.exe, рабочий процесс сервера 1С:Предприятия 8.3. Именно он выполняет серверный код конфигурации, держит соединения с базой данных СУБД и обслуживает сеансы пользователей. Несколько копий rphost.exe в диспетчере задач — нормальная картина для клиент-серверной установки, а не вирус и не сбой.
Если процесс разросся до десятков гигабайт, грузит процессор на 100% или падает, проблема почти всегда решается настройками кластера: лимитами памяти, интервалом перезапуска и правильным распределением нагрузки. Ниже — что крутить и в каком порядке.
Что такое rphost и какое место он занимает в кластере 1С
Сервер 1С состоит из трёх типов процессов. У каждого своя задача и свой порт.
| Процесс | Роль | Порт по умолчанию |
|---|---|---|
ragent.exe | Агент сервера: запускает остальные процессы, принимает первое обращение клиента и консоли | 1540 |
rmngr.exe | Менеджер кластера: реестр баз, сеансы, блокировки, распределение соединений | 1541 |
rphost.exe | Рабочий процесс: выполняет код, работает с СУБД, обслуживает сеансы | диапазон 1560–1591 |
Порядок подключения такой: клиент приходит к агенту на 1540, тот передаёт его менеджеру кластера на 1541, а менеджер назначает соединению конкретный рабочий процесс. Дальше клиент общается с rphost напрямую через порт из диапазона.
Диапазон портов рабочих процессов задаётся в свойствах рабочего сервера. Если на сервере включён брандмауэр, открыть нужно и 1540–1541, и весь диапазон. Типичный симптом закрытого диапазона: консоль кластера видит сервер, а клиент не может войти в базу.
Что важно знать про rphost:
- 🔹 один процесс обслуживает много сеансов и много баз одновременно;
- 🔹 процессы запускает агент, вручную их стартовать не нужно;
- 🔹 работает от имени учётной записи службы, по умолчанию
USR1CV8; - 🔹 в файловом варианте баз
rphostнет: там код выполняет сам клиент.
Если rphost.exe вдруг обнаружился на обычном рабочем компьютере, значит, при установке платформы туда поставили компонент «Сервер 1С:Предприятия» и он работает как служба. Ненужную службу отключают через services.msc.
Сколько рабочих процессов rphost нужно и как это настроить
В 1С 8.3 число процессов rphost не задают одной цифрой. Сервер запускает их сам, исходя из ограничений, указанных в свойствах рабочего сервера.
Где это находится:
- Откройте «Администрирование серверов 1С Предприятия».
- Разверните
Центральные серверы 1С:Предприятия → <имя сервера> → Кластеры → <кластер> → Рабочие серверы. - Откройте свойства нужного рабочего сервера.
Ключевые параметры в этом окне:
- 📌 Количество ИБ на процесс — сколько баз может обслуживать один
rphost. Значение 1 даёт каждой базе собственный процесс. - 📌 Количество соединений на процесс — сколько соединений принимает процесс, прежде чем сервер запустит следующий.
- 📌 Менеджер под каждый сервис — выносит сервисы кластера в отдельные процессы
rmngr.
Как выбирать значения на практике:
| Ситуация | Что поставить | Зачем |
|---|---|---|
| 1–3 крупные базы, 50+ пользователей | ИБ на процесс = 1 | Сбой или утечка памяти в одной базе не роняет остальные |
| Десятки мелких баз (бухгалтерия для клиентов) | Оставить по умолчанию | Меньше процессов, меньше накладных расходов на память |
| Один тяжёлый процесс с сотней сеансов | Уменьшить число соединений на процесс | Нагрузка разойдётся по нескольким rphost |
Каждый rphost держит в памяти кэш конфигурации каждой базы, которую обслуживает. Поэтому при «ИБ на процесс = 1» и 30 базах расход памяти заметно вырастет. Для сервера с 16 ГБ ОЗУ и десятком баз такой режим часто избыточен.
Изменения ограничений применяются к новым процессам. Уже работающие процессы продолжат жить по старым правилам до перезапуска.
Почему rphost съедает память и как настроить перезапуск
Рост памяти rphost.exe бывает двух видов. Плавный рост в течение дня — кэши конфигурации, метаданных и временных данных; это ожидаемо. Резкие скачки или рост без остановки — признак тяжёлых операций или утечки в коде конфигурации.
Частые причины прожорливого rphost:
- 📈 отчёт или обработка выбирает в память миллионы строк;
- 📈 фоновое задание (обмен, загрузка, полнотекстовый индекс) обрабатывает большие объёмы;
- 📈 код расширения или доработки хранит данные в глобальных переменных сеанса;
- 📈 обновление информационной базы или реструктуризация;
- 📈 32-разрядный сервер: процессу доступно лишь несколько гигабайт адресного пространства, после чего он падает с ошибкой нехватки памяти.
Ограничения задают в двух местах. Свойства кластера:
- ⚙️ Интервал перезапуска — через сколько секунд рабочие процессы перезапускаются плановым порядком. 0 — не перезапускать.
- ⚙️ Допустимый объём памяти — порог для одного процесса.
- ⚙️ Интервал превышения допустимого объёма памяти — сколько секунд процесс может держаться выше порога.
- ⚙️ Выключенные процессы останавливать через — сколько ждать, пока «выключенный» процесс доработает.
- ⚙️ Принудительно завершать проблемные процессы — флажок, разрешающий кластеру завершать зависшие процессы.
Свойства рабочего сервера:
- ⚙️ Максимальный объём памяти рабочих процессов — общий лимит для всех
rphostна этом сервере; - ⚙️ Безопасный расход памяти за один вызов — сколько может съесть один серверный вызов, когда общий лимит уже превышен.
Как работает мягкий перезапуск
Когда процесс превысил допустимый объём дольше заданного интервала, кластер помечает его как выключенный. Новые соединения уходят в свежий rphost, а старый дорабатывает текущие сеансы. По истечении времени «Выключенные процессы останавливать через» он завершается.
Для пользователя это обычно незаметно: сеанс переносится в новый процесс при следующем серверном вызове. Длинная операция, которая выполнялась в момент остановки, может прерваться.
Пример настроек для сервера с 32 ГБ ОЗУ
| Параметр | Ориентир |
|---|---|
| Допустимый объём памяти (на процесс) | 6–8 ГБ |
| Интервал превышения | 300 секунд |
| Выключенные процессы останавливать через | 600–1800 секунд |
| Максимальный объём памяти рабочих процессов | 20–24 ГБ (остальное — ОС и СУБД, если она на этом же сервере) |
| Интервал перезапуска | 86 400 секунд (раз в сутки) или 0 |
Это стартовые цифры, а не догма. Если СУБД стоит на том же сервере, ей тоже нужна память, и лимит для rphost стоит уменьшить.
Поля памяти в консоли задаются в килобайтах. 8 ГБ — это 8 388 608 КБ. Ошибка на порядок даёт постоянные перезапуски или отсутствие защиты вообще.
rphost завис или грузит процессор: диагностика и технологический журнал
Начинайте с консоли кластера, а не с диспетчера задач. Она показывает, какой процесс и какой сеанс виноват.
- Откройте ветку
Рабочие процессыв кластере. Посмотрите колонки памяти, среднего времени вызова и доступной производительности. - У проблемного процесса раскройте список соединений и сеансов: видно, какие пользователи и фоновые задания сидят на нём.
- В ветке
Сеансыотсортируйте по времени вызова или объёму памяти. Тяжёлый сеанс обычно один. - Если сеанс — фоновое задание, откройте базу и проверьте журнал регламентных заданий.
Для Linux-серверов то же самое можно увидеть утилитой rac. Базовые команды: rac cluster list выдаёт идентификатор кластера, rac process list --cluster=<id> — рабочие процессы с памятью и числом соединений, rac session list --cluster=<id> — сеансы. Остальные ключи смотрите в справке rac help.
Технологический журнал
Когда консоли мало, включают технологический журнал. Файл logcfg.xml кладут в каталог conf установленной платформы, например C:\Program Files\1cv8\conf\. Сервер подхватывает его без перезапуска службы, обычно в течение минуты.
Минимальная настройка для поиска падений и зависаний rphost:
<?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="PROC"/>
</event>
<event>
<eq property="name" value="TTIMEOUT"/>
</event>
<event>
<eq property="name" value="TDEADLOCK"/>
</event>
<property name="all"/>
</log>
</config>
Что ищем в событиях:
- 🔍 PROC — старт и завершение процессов: видно, когда и почему
rphostперезапустился; - 🔍 EXCP — исключения, включая аварийные завершения;
- 🔍 TTIMEOUT и TDEADLOCK — таймауты и взаимоблокировки управляемых блокировок, частая причина «всё висит».
Технологический журнал с событием CALL или DBMSSQL на всех событиях быстро забивает диск. Включайте такие события с фильтром по базе или длительности и не дольше, чем нужно для поиска причины. После диагностики удалите logcfg.xml или сократите его.
Каталог журнала должен быть доступен на запись учётной записи службы 1С. Иначе журнал молча не пишется.
Распределение нагрузки между рабочими процессами rphost
Менеджер кластера сам решает, в какой rphost отправить новое соединение. На его выбор влияют три вещи.
Режим распределения нагрузки в свойствах кластера:
- ⚖️ «Приоритет по производительности» — соединение уходит туда, где выше доступная производительность;
- ⚖️ «Приоритет по памяти» — сервер старается экономить память и плотнее нагружает уже запущенные процессы.
Доступная производительность — показатель, который кластер вычисляет для каждого процесса по скорости обработки эталонных вызовов. Процесс, занятый тяжёлой операцией, получает низкий показатель и реже принимает новые соединения.
Требования назначения функциональности — правила в свойствах рабочего сервера. С их помощью можно, например, отправить фоновые задания на отдельный рабочий сервер, а пользовательские соединения оставить на основном. Так ночной обмен с сайтом перестаёт тормозить менеджеров днём.
Схема с двумя рабочими серверами:
| Сервер | Что на нём выполняется | Как настроить |
|---|---|---|
| Основной | Клиентские соединения пользователей | Требование для объекта «Клиентское соединение с ИБ» — назначать |
| Второй | Фоновые и регламентные задания | Требование для объекта «Фоновое задание» — назначать; для клиентских соединений — не назначать |
Учтите ограничение: один сеанс выполняется в одном процессе. Тяжёлый отчёт одного пользователя не размажется на все ядра. Распределение помогает, когда много параллельных сеансов, а не когда тормозит одна операция.
После добавления второго рабочего сервера проверьте, что на нём установлена та же версия платформы и открыт диапазон портов.
Практики, которые держат rphost стабильным
Несколько приёмов, которые администраторы применяют на большинстве серверов 1С.
64-разрядный сервер
32-битный rphost на базах от нескольких гигабайт и 20+ пользователях падает регулярно. Ставьте 64-разрядный сервер 1С той же версии, что и клиенты. Номер платформы на сервере и клиентах должен совпадать полностью, до последней цифры.
Очистка кэша сервера в srvinfo
Часть странных ошибок после обновления платформы или конфигурации лечится очисткой сеансовых данных в каталоге srvinfo, по умолчанию C:\Program Files\1cv8\srvinfo\reg_1541\. Чистят подкаталоги snccntx* при остановленной службе.
Остановка службы «Агент сервера 1С:Предприятия» обрывает все сеансы во всех базах кластера. Делайте это вне рабочего времени, предупредив пользователей. Файлы реестра кластера (1CV8Clst.lst и соседние) не удаляйте: потеряете список баз и настройки кластера.
Лимиты вместо ручного «убийства»
Завершить rphost.exe через диспетчер задач можно, и агент запустит новый процесс. Но все сеансы на этом процессе оборвутся, а незавершённые транзакции откатятся. Такой шаг — крайняя мера при полном зависании. Для регулярной борьбы с памятью есть мягкий перезапуск по лимитам, описанный выше.
Ограничения потребления ресурсов
В консоли кластера есть ветки «Счетчики потребления ресурсов» и «Ограничения потребления ресурсов». Счётчик собирает статистику по сеансам с заданным отбором, а ограничение может предупредить или прервать вызов, превысивший порог по памяти, процессору или времени. Это точечный инструмент против одного «прожорливого» отчёта.
Частые ошибки при настройке rphost
- ❌ Ставят «ИБ на процесс = 1» на сервере с 40 базами. Получается 40+ процессов, каждый со своим кэшем, и памяти перестаёт хватать.
- ❌ Путают килобайты с мегабайтами. Лимит «8192» в поле памяти — это 8 МБ, процессы начинают перезапускаться без конца.
- ❌ Ставят слишком короткое «Выключенные процессы останавливать через». Долгий отчёт или закрытие месяца прерывается на середине.
- ❌ Оставляют техжурнал включённым на месяцы. Диск сервера заполняется, и тогда падает уже всё, включая СУБД.
- ❌ Лечат каждую проблему перезагрузкой сервера. Причина — конкретный отчёт или фоновое задание — остаётся, и через день всё повторяется.
Частые вопросы
Сколько процессов rphost.exe должно быть на сервере?
Можно ли запускать rphost с правами администратора, чтобы он работал быстрее?
srvinfo, техжурнала и временных файлов.