Почему rphost падает каждые 15 минут и как это исправить?

Системный администратор 1С v8.3 (Управляемые формы) 1C:Бухгалтерия IT и автоматизация бизнеса
← На главную

Ситуация, когда рабочий процесс сервера 1С rphost начинает аварийно завершаться с определенной периодичностью, является критической для работы любого предприятия. Особенно часто специалисты сталкиваются с падениями каждые 15 минут. В этой статье мы подробно разберем, почему возникает такая закономерность, проанализируем записи технологического журнала и изучим пошаговое решение, связанное с обновлением внутренних компонент конфигурации.

Анализ симптомов и записей технологического журнала

Первым делом проанализируем записи, которые оставляет система в технологическом журнале (ТЖ) в момент падения. Типичная ошибка выглядит следующим образом:


37:40.832000-0,EXCP,0,process=rphost,p:processName=RHostRoot,OSThread=6360,OSException=rphost_8.3.13.1644_6b2b7ca0_20191010133740_8684 enabled external
37:40.832003-0,EXCP,0,process=rphost,p:processName=RHostRoot,OSThread=6360,DumpError=DirBin property is empty
37:40.894000-0,EXCP,0,process=rphost,p:processName=RHostRoot,OSThread=6360,DumpError=Created dump file: G:\ТЖ\Dumps\rphost_8.3.13.1644_6b2b7ca0_20191010133740_8684.mdmp

Разберем, что здесь происходит. Событие EXCP с признаком OSException указывает на то, что ошибка произошла не на уровне встроенного языка 1С, а на уровне операционной системы. Это может быть обращение к недопустимому адресу памяти (Access Violation) или критическая ошибка во внешней компоненте. Запись DumpError=DirBin property is empty часто вводит в заблуждение, но она лишь означает, что системе не удалось корректно определить путь для записи некоторых метаданных дампа, хотя сам файл .mdmp был создан.

Магическое число 15: почему интервал именно такой?

Многие администраторы замечают, что rphost падает ровно через 900 секунд (15 минут). Давайте выясним причину такой цикличности. Рассмотрим настройки кластера 1С в консоли администрирования:

  1. Параметр «Время завершения проблемного процесса»: В настройках рабочего сервера по умолчанию часто установлено значение 900 секунд. Если процесс признается системой «проблемным» (например, из-за утечки памяти или зависшего потока), менеджер кластера дает ему ровно 15 минут на завершение, после чего принудительно убивает его.
  2. Рециклинг процессов: Если настроен перезапуск процессов по превышению объема памяти, и критическая отметка достигается быстро (например, из-за утечки в коде), интервал также может стабилизироваться на определенной отметке.
  3. Регламентные задания: Проанализируем расписание заданий. Например, «Обновление индекса полнотекстового поиска» по умолчанию запускается каждые 15 минут. Если при индексации происходит обращение к некорректным данным, это вызывает падение.

Основная причина: Компонента печати штрихкодов

Как показывает практика и официальные ответы техподдержки 1С, наиболее вероятной причиной падения rphost в конфигурациях «Бухгалтерия предприятия 3.0» и других решениях на базе БСП (Библиотеки стандартных подсистем) является устаревшая компонента печати штрихкодов. В версиях компоненты ниже 9.0.6.4 содержалась ошибка работы с памятью (утечка дескрипторов GDI), которая приводила к падению процесса при формировании печатных форм (счетов, платежек с QR-кодами).

Рассмотрим пошаговый алгоритм решения этой проблемы:

  1. Выясним текущую версию компоненты. Она хранится в объекте ОбщийМакет.КомпонентаПечатиШтрихкодов.
  2. Нам необходимо получить новую версию компоненты (не ниже 9.0.6.4). Ее можно извлечь из актуальной версии конфигурации «1С:Библиотека подключаемого оборудования» (БПО).
  3. Распакуем файл 1CBarCode.zip (или аналогичный из состава БПО).
  4. В конфигураторе нашей рабочей базы откроем ОбщийМакет.КомпонентаПечатиШтрихкодов.
  5. Заменим содержимое макета (загрузим новый бинарный файл из БПО).
  6. Сохраним изменения и обновим конфигурацию базы данных.

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

Проверка настроек памяти кластера

Иногда причина кроется в банальной ошибке конфигурирования. Разберем ситуацию, когда rphost падает из-за жестких ограничений в консоли 1С. Проанализируем параметры рабочего сервера:

Посмотрим на пример правильной настройки для сервера с 32 Гб ОЗУ: значение Допустимый объем памяти должно составлять около 25 000 000 (в КБ), что обеспечит стабильную работу процессов без преждевременного рециклинга.

Диагностика с помощью сторонних утилит

Если технологический журнал не дает полной картины (например, запись обрывается), проанализируем ситуацию с помощью утилиты ProcDump от Microsoft. Это позволит поймать момент падения rphost и увидеть стек вызовов. Выполним следующие действия:

  1. Скачаем ProcDump и разместим его на сервере.
  2. Запустим мониторинг конкретного процесса (нужно узнать PID процесса rphost через диспетчер задач):

procdump.exe -e 1 -f "" -ma [PID_процесса] C:\Dumps\

Параметр -e 1 заставит утилиту создать дамп при возникновении первого же необработанного исключения. Если в дампе мы увидим обращение к библиотеке 1CBarCode.dll или gdiplus.dll, это однозначно подтвердит проблему с компонентой печати.

Дополнительные рекомендации

Проанализируем еще несколько факторов, которые могут приводить к нестабильности rphost на платформе 8.3.13 и выше:

Подведем итог: В большинстве случаев падение rphost каждые 15 минут в типовых конфигурациях связано с ошибкой «Access Violation» во внешней компоненте печати штрихкодов. Обновление макета КомпонентаПечатиШтрихкодов до версии 9.0.6.4 и выше является проверенным решением, которое устраняет данную проблему без необходимости глубокого рефакторинга кода.

← На главную