При администрировании серверов 1С:Предприятие одной из самых трудноуловимых проблем являются самопроизвольные перезапуски рабочих процессов rphost. Ситуация осложняется, когда в консоли кластера не настроены регламентные перезапуски, а в Технологическом журнале (ТЖ) фиксируются странные ошибки вида «Рассогласование транспорта интерфейсов» (Interface transport mismatch). Разберем подробно, почему это происходит и как стабилизировать работу сервера.
Первым делом проанализируем ситуацию. Если вы заметили, что в папке логов ТЖ за сутки создается несколько десятков подпапок с именами процессов, это явный признак того, что рабочие процессы аварийно завершаются или принудительно перезапускаются менеджером кластера rmngr. Для диагностики проблемы в файл logcfg.xml необходимо добавить сбор событий исключений EXCP и контекста этих исключений EXCPCNTX.
Рассмотрим пример типичной ошибки из логов, которую мы можем встретить в такой ситуации:
42:16.972040-0,EXCP,3,process=rphost,p:processName=Trade,OSThread=6460,t:clientID=7680,
t:applicationName=1CV8,t:computerName=TerminalServer,t:connectID=101936,SessionID=1611,Usr=Администратор,
Exception=dd149677-3d47-4e05-a55f-4e75b13a441f,Descr='src\RemoteInterfaceImpl.cpp(2232):
dd149677-3d47-4e05-a55f-4e75b13a441f: Рассогласование транспорта интерфейсов. i=a73a0756-4f0e-4645-bda4-ec823b433ff7 m=31'
Эта ошибка указывает на сбой в протоколе RPC (Remote Procedure Call). По сути, один узел системы (например, клиент) отправил запрос в одном формате, а другой узел (сервер) ожидал данные в другом формате или получил их в искаженном виде. Проанализируем основные причины этого явления.
Одной из наиболее распространенных причин возникновения «рассогласования» является некорректная работа платформы 1С с протоколом IPv6. Даже если вы считаете, что он отключен, в современных ОС Windows он часто остается активным на уровне туннельных интерфейсов или в скрытых настройках реестра.
Выясним, как правильно отключить IPv6 для стабилизации транспорта 1С:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters\.DisabledComponents (тип DWORD 32 бит) и установим его значение в 0xFFFFFFFF.IPv4.Если сервер 1С и терминальный сервер — это разные машины, транспорт интерфейсов может страдать из-за искажения пакетов на сетевом уровне. Рассмотрим влияние параметров MTU и технологий разгрузки TCP.
Проанализируем ситуацию с фрагментацией пакетов. Если между узлами есть оборудование с меньшим MTU, чем стандартные 1500 байт, пакеты будут дробиться, что иногда приводит к ошибкам десериализации данных в 1С. Проверить это можно командой ping -f -l 1472 [адрес_сервера]. Если пакет не проходит, нужно уменьшать MTU на сетевых интерфейсах.
Также крайне рекомендуется отключить функции «разгрузки» сетевой карты, которые могут портить бинарный трафик 1С:
TCP Chimney OffloadReceive Side Scaling (RSS)Network Direct Memory Access (NetDMA)Для отключения выполним в командной строке от имени администратора:
netsh int tcp set global chimney=disabled
netsh int tcp set global rss=disabled
netsh int tcp set global netdma=disabled
Выясним причину, связанную с самой платформой. В версиях ветки 8.3.12 (особенно в релизах около 1924) была обнаружена специфическая ошибка: сам факт включения подробного Технологического журнала мог провоцировать ошибки в работе rphost. Это звучит парадоксально — инструмент диагностики сам становится причиной сбоя.
Проанализируем записи в логах, когда процесс «завершается»:
37:46.611008-0,EXCP,0,process=rphost,OSThread=16440,Exception=dd149677-3d47-4e05-a55f-4e75b13a441f,
Descr='src\RemoteInterfaceImpl.cpp(736): dd149677-3d47-4e05-a55f-4e75b13a441f:
Процесс завершается. Исходящий вызов запрещен.'
Если вы видите массовые сообщения «Процесс завершается. Исходящий вызов запрещен», это означает, что rphost уже находится в состоянии выключения, но менеджер кластера или клиенты пытаются отправить ему задания. Если это происходит постоянно, проверьте настройки консоли кластера:
Если клиент (или rmngr) и rphost находятся на одном физическом сервере, платформа по умолчанию пытается использовать протокол Shared Memory. При возникновении ошибок «рассогласования» рекомендуется принудительно перевести систему на использование TCP/IP.
Для этого в строке подключения к базе или в настройках сервера можно указать протокол явно. В некоторых случаях это помогает избежать конфликтов доступа к разделяемой памяти Windows, которые интерпретируются 1С как транспортные ошибки.
Подведем итог нашему исследованию. Ошибка «рассогласование транспорта интерфейсов» — это симптом, а не причина. Чтобы избавиться от нее, выполним следующие шаги:
ragent.exe, rmngr.exe, rphost.exe) в исключения антивируса, чтобы исключить проверку трафика на портах 1560–1591.Соблюдение этих рекомендаций позволит стабилизировать работу рабочего процесса и избавиться от бесконечного каскада исключений в Технологическом журнале.