Ситуация, когда рабочий процесс 1С (rphost.exe) завершается аварийно, является одной из самых сложных задач для системного администратора и разработчика. Особенно остро проблема стоит на старых релизах платформы, таких как 8.3.10.2580, где современные механизмы самодиагностики еще не были доведены до совершенства. В данной статье мы подробно разберем, как интерпретировать сообщения технологического журнала и какие шаги предпринять для стабилизации работы сервера.
Рассмотрим типовую конфигурацию, в которой возникают подобные сбои: сервер под управлением Windows, база данных на MS SQL Server, и пользователи, подключающиеся через веб-сервер Apache. В логах технологического журнала (ТЖ) при этом могут наблюдаться цепочки исключений, которые на первый взгляд кажутся несвязанными. Однако, если мы присмотримся, то увидим последовательность: ошибки лицензирования, потеря доступа к временным файлам и, наконец, сетевой разрыв.
Одной из первых в логах часто мелькает ошибка LicenseBaseImpl.cpp(5360): Ошибка формата потока. Проанализируем ситуацию: платформа пытается обратиться к подсистеме лицензирования, но получает данные, которые не может корректно интерпретировать. Рассмотрим основные причины этого явления:
.lic в каталоге C:\ProgramData\1C\licenses могут быть повреждены из-за некорректного завершения работы сервера или сбоев файловой системы.Следующий важный маркер в ТЖ — ошибка DataSeparationService.cpp: Файл не обнаружен 'v8srvr://.../Files/SprScndInfo'. Выясним, что это значит. SprScndInfo (Spreadsheet Second Information) — это временные данные, связанные с отображением форм, табличных документов и отчетов. Платформа хранит их в сеансовых данных на сервере.
Если rphost внезапно теряет доступ к этому файлу, это сигнализирует об одной из двух проблем:
srvinfo (обычно reg_1541), считая их подозрительными.Temp, в которой rphost держит часть своих рабочих данных.Часто падению процесса предшествует запись NetDataExchangeException: recv returns zero, disconnected. Разберем по шагам, что происходит в этот момент:
Когда клиент работает через Apache, модуль расширения веб-сервера (wsap24.dll) выступает посредником между пользователем и rphost. Запись recv returns zero означает, что соединение было разорвано со стороны веб-сервера. Это может произойти из-за таймаутов Apache. Посмотрим на критические настройки в конфигурационном файле httpd.conf:
KeepAliveTimeout — если этот параметр слишком мал, Apache будет рвать «длинные» соединения, что на платформе 8.3.10 иногда приводило к критическому исключению в rphost, не успевающем обработать обрыв потока.
Поскольку обновить платформу не всегда возможно из-за специфического лицензирования конфигурации, применим комплекс мер по обслуживанию текущей среды:
Шаг 1: Полная очистка серверного кэша
Это стандартная, но критически важная процедура. Выполним её следующим образом:
C:\Program Files\1cv8\srvinfo\reg_1541 (путь может отличаться в зависимости от настроек).1CV8Reg.lst). Особенно нас интересует папка snccntx, где хранятся контексты сеансов.Шаг 2: Настройка исключений антивируса
Проанализируем настройки безопасности. В список исключений сканирования в реальном времени необходимо добавить:
rphost.exe, rmngr.exe, ragent.exe.srvinfo со всеми вложенными файлами.%TEMP%) пользователя, под которым запускается служба 1С.Шаг 3: Диагностика через дампы памяти
Если rphost продолжает падать с сообщением Process terminated. Stopped on error, нам помогут дампы. Посмотрим, как их получить. В Windows Server можно настроить Windows Error Reporting или использовать утилиту ProcDump. Анализ дампа в WinDbg позволит точно определить модуль (например, backend.dll), в котором происходит исключение Access Violation.
В логах автора упоминается ошибка 10038: Сделана попытка выполнить операцию на объекте, не являющемся сокетом в потоке HeartbeatThreadImpl.cpp. Проанализируем эту ситуацию. Важно понимать, что это следствие, а не причина. Основной рабочий поток уже потерпел крах, дескрипторы сокетов были закрыты операционной системой, а фоновый поток опроса («heartbeat»), который проверяет живучесть процесса, попытался обратиться к уже несуществующему ресурсу. Поэтому не стоит искать проблему в «сокетах» — нужно искать, что убило процесс за несколько секунд до появления этой записи.
Для платформы 8.3.10 крайне важно правильно настроить параметры перезапуска рабочих процессов. Рассмотрим оптимальные значения в консоли администрирования серверов 1С:
rmngr.Таким образом, комбинируя глубокий анализ технологического журнала с регулярным обслуживанием серверной инфраструктуры и корректной настройкой веб-сервера, мы можем добиться стабильной работы даже на устаревших версиях платформы 1С.