Ситуация, когда рабочий процесс rphost.exe запускается и практически мгновенно завершается, является одной из самых сложных в администрировании серверов 1С:Предприятие. В технологическом журнале (ТЖ) это сопровождается сообщениями «Рабочий процесс не найден», «Supervision time expired» или «Process terminated. Stopped on error». Разберем подробно причины такого поведения системы и пошагово проанализируем способы решения проблемы.
Для начала проанализируем типичную последовательность событий в логах, которая указывает на проблему. Рассмотрим пример записи события PROC от агента сервера ragent:
08:47.582010-1,PROC,0,process=ragent,OSThread=12136,Txt='Run process.
Prog=C:\Program Files\1cv8\8.3.15.1830\bin\rphost.exe,
Command=("..." -range 1560:1591 -reghost MOS-COD-VM06 -regport 1541
-pid cde8f9e7-d144-407e-b926-3cd123106d37 -debug -tcp -fromsrvc), success, pid=14160'
В данном случае мы видим успешный запуск процесса с pid=14160. Однако уже через короткое время появляются следующие записи:
09:20.707000-0,PROC,0,process=ragent,OSThread=15344,Txt='Supervision time expired.
ProcessID=cde8f9e7-d144-407e-b926-3cd123106d37 pid=14160 started=1532022047.'
09:22.222020-0,EXCP,0,process=ragent,OSThread=14808,Exception=f6f167a0-dcc9-49ad-8f8e-2c9d9904e4fe,
Descr="OpenProcess('14160',14160): 87(0x00000057): Параметр задан неверно."
Разберем, что означают эти параметры. Сообщение «Supervision time expired» говорит о том, что «таймер наблюдения» агента сервера истек. ragent ожидал отклика от рабочего процесса rphost, но не получил его в установленный срок. Ошибка «OpenProcess: 87(0x00000057)» означает, что когда агент попытался обратиться к процессу по его PID, этого процесса в операционной системе уже не существовало — он «упал» самостоятельно или был «отстрелен» ОС.
Первоочередное действие при возникновении подобных ошибок — проверка версии платформы на наличие известных ошибок. Рассмотрим ситуацию с багом 30171159. Данная ошибка была официально зарегистрирована и проявлялась именно через сообщение Supervision time expired.
Проанализируем специфику этой ошибки: она часто возникала в процессах фоновых заданий, использующих COM-соединения или специфические механизмы взаимодействия внутри кластера. Исправление было внесено в версию платформы 8.3.16.1296 и более поздние релизы.
Алгоритм действий:
srvinfo/reg_XXXX/sncfg), чтобы исключить влияние старых сессионных данных.Выясним причину, не связанную напрямую с кодом 1С. Если сервер работает в виртуальной среде (например, VMware или Hyper-V), причиной ошибки Supervision time expired могут быть скачки системного времени.
Рассмотрим механизм возникновения проблемы: ragent запускает таймер. В этот момент происходит синхронизация времени виртуальной машины с хостом или внешним сервером NTP, и время «прыгает» вперед на несколько секунд или минут. Агент сервера мгновенно решает, что время ожидания отклика от rphost истекло, и принудительно завершает рабочий процесс.
Для устранения этой причины выполним следующие шаги:
Ошибка OpenProcess: Параметр задан неверно часто является следствием того, что процесс rphost завершился аварийно из-за невозможности инициализировать сетевые сокеты. Рассмотрим влияние протокола IPv6.
В некоторых конфигурациях сервер 1С пытается прослушивать порты на интерфейсе IPv6. Если стек протокола в Windows настроен некорректно или конфликтует с IPv4, rphost завершается с ошибкой на этапе старта. При этом в ТЖ мы увидим Process terminated. Stopped on error (working).
Рекомендуемые действия:
DisabledComponents со значением 0xFF по адресу HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters.hosts: в нем не должно быть лишних записей для localhost, кроме стандартного 127.0.0.1.Обратим внимание на командную строку запуска процесса из примера автора: присутствует флаг -debug. В режиме отладки рабочему процессу требуется выделение портов из диапазона, указанного при настройке кластера (обычно 1560-1591).
Проанализируем ситуацию: если в системе зависли «зомби-процессы» от предыдущих запусков или порты заняты другим ПО, rphost при попытке запуска в режиме отладки не сможет занять необходимый порт и тут же завершится. Это объясняет, почему в консоли может появляться сообщение: «Working Process (debug) started... Working Process (debug) finished» в течение одной секунды.
Посмотрим на пути решения:
-debug и проверим, исчезнет ли ошибка.netstat -ano | findstr :156, чтобы увидеть, не заняты ли порты другими приложениями.Как показывает практика (сообщение 12 из обсуждения), проблема может крыться в системных библиотеках Windows. Если платформа 1С использует функции ОС, которые работают некорректно из-за отсутствия критических патчей безопасности или обновлений ядра, рабочие процессы могут падать без объяснения причин в логах самой 1С.
Рассмотрим порядок действий:
CRT (C Runtime) и .NET Framework, так как компоненты 1С активно их используют.Событие ATTN с описанием «Process is abandoned» (процесс заброшен) указывает на то, что менеджер кластера (rmngr) потерял связь с процессом rphost, хотя тот формально еще может числиться в списках. Это часто происходит из-за повреждения файлов в папке srvinfo.
Разберем по шагам процедуру «жесткой» очистки:
1C:Enterprise 8.3 Server Agent.C:\Program Files\1cv8\srvinfo).reg_XXXX найдем каталог sncfg и очистим его содержимое.temp.Ошибка «Рабочий процесс не найден» является следствием преждевременного падения rphost.exe. Наиболее эффективным решением является обновление платформы 1С до релизов, где исправлены ошибки управления временем (Supervision time). Вторым по значимости фактором выступает стабильность системного времени и корректность сетевых настроек (IPv6). Если же проблема сохраняется на разных версиях платформы, следует обратить внимание на обновления ОС и права доступа к рабочим каталогам сервера 1С.