Ситуация, когда рабочий процесс сервера 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 был создан.
Многие администраторы замечают, что rphost падает ровно через 900 секунд (15 минут). Давайте выясним причину такой цикличности. Рассмотрим настройки кластера 1С в консоли администрирования:
Как показывает практика и официальные ответы техподдержки 1С, наиболее вероятной причиной падения rphost в конфигурациях «Бухгалтерия предприятия 3.0» и других решениях на базе БСП (Библиотеки стандартных подсистем) является устаревшая компонента печати штрихкодов. В версиях компоненты ниже 9.0.6.4 содержалась ошибка работы с памятью (утечка дескрипторов GDI), которая приводила к падению процесса при формировании печатных форм (счетов, платежек с QR-кодами).
Рассмотрим пошаговый алгоритм решения этой проблемы:
ОбщийМакет.КомпонентаПечатиШтрихкодов.1CBarCode.zip (или аналогичный из состава БПО).ОбщийМакет.КомпонентаПечатиШтрихкодов.Важный нюанс: Падения происходят именно в рабочее время, потому что именно тогда пользователи активно отправляют документы на печать или открывают формы предварительного просмотра, инициируя вызов методов внешней компоненты на стороне сервера.
Иногда причина кроется в банальной ошибке конфигурирования. Разберем ситуацию, когда rphost падает из-за жестких ограничений в консоли 1С. Проанализируем параметры рабочего сервера:
Допустимый объем памяти — проверьте единицы измерения. Часто администраторы путают Килобайты (KB) и Мегабайты (MB). Если вместо 4 Гб (4 000 000 KB) указать 4000, система будет считать, что процессу разрешено всего 4 Мб памяти, и начнет его убивать сразу после старта.Интервал превышения допустимого объема памяти — если этот параметр равен 0, процесс будет убит мгновенно при достижении лимита.Посмотрим на пример правильной настройки для сервера с 32 Гб ОЗУ: значение Допустимый объем памяти должно составлять около 25 000 000 (в КБ), что обеспечит стабильную работу процессов без преждевременного рециклинга.
Если технологический журнал не дает полной картины (например, запись обрывается), проанализируем ситуацию с помощью утилиты ProcDump от Microsoft. Это позволит поймать момент падения rphost и увидеть стек вызовов. Выполним следующие действия:
rphost через диспетчер задач):
procdump.exe -e 1 -f "" -ma [PID_процесса] C:\Dumps\
Параметр -e 1 заставит утилиту создать дамп при возникновении первого же необработанного исключения. Если в дампе мы увидим обращение к библиотеке 1CBarCode.dll или gdiplus.dll, это однозначно подтвердит проблему с компонентой печати.
Проанализируем еще несколько факторов, которые могут приводить к нестабильности rphost на платформе 8.3.13 и выше:
bin и srvinfo добавлены в исключения. Антивирус может блокировать временные файлы, которые rphost создает при работе с внешними компонентами, вызывая OSException.sfc /scannow для проверки системных компонентов Windows.Подведем итог: В большинстве случаев падение rphost каждые 15 минут в типовых конфигурациях связано с ошибкой «Access Violation» во внешней компоненте печати штрихкодов. Обновление макета КомпонентаПечатиШтрихкодов до версии 9.0.6.4 и выше является проверенным решением, которое устраняет данную проблему без необходимости глубокого рефакторинга кода.