При администрировании высоконагруженных систем на платформе 1С:Предприятие 8.3 специалисты часто сталкиваются с лавинообразным ростом объема технологического журнала (ТЖ). Разбор технологического журнала без боли и страданий становится важной задачей. Одной из наиболее раздражающих проблем является постоянное появление исключений EXCP с описанием «Сеанс отсутствует или удален». В этой статье мы подробно разберем, почему возникают эти записи, как они связаны с внутренними механизмами платформы и как привести логи в порядок, не теряя при этом важную диагностическую информацию.
Прежде всего, проанализируем типовую запись из технологического журнала, которая вызывает беспокойство (в анализе поможет конвертер технологического журнала в новый формат). Обычно она выглядит следующим образом:
22:13.171002-0,EXCP,2,process=rphost,p:processName=base_ac,t:applicationName=BackgroundJob,Exception=60c686dc-798f-4d17-aadb-a90156a16eb8,Descr='src\rserver\src\SrvrInfoBaseImpl.cpp(935): 60c686dc-798f-4d17-aadb-a90156a16eb8: Сеанс отсутствует или удален'
Разберем, что здесь происходит. Процесс rphost пытается выполнить операцию в контексте фонового задания (BackgroundJob). Однако в момент обращения к менеджеру кластера выясняется, что идентификатор сеанса, под которым работает поток, уже не является валидным. Ссылки на файлы SrvrInfoBaseImpl.cpp и RMngrCalls.cpp прямо указывают на разрыв коммуникации между рабочим процессом и менеджером кластера (rmngr).
Рассмотрим основные сценарии, при которых возникает данная коллизия. Важно понимать, что в большинстве случаев это не «падение» системы, а штатное (хотя и неаккуратное с точки зрения логирования) завершение процессов.
rphost еще «помнит» сеанс, а rmngr его уже удалил из таблицы активных соединений.rphost вернуть результат в уже «убитый» сеанс, мы получаем искомое исключение.rphost достигает предела, он помечается к завершению. Новые соединения на него не принимаются, а старые начинают принудительно закрываться. В этот переходный период массово генерируются ошибки о потере сеансов.Для начала попробуем минимизировать количество естественных перезапусков процессов. Выполним следующие действия в консоли администрирования кластера 1С (в качестве альтернативы может использоваться OneS Cluster Admin - консоль администрирования кластера серверов 1С):
rphost увеличивает риск того, что при падении или перезагрузке одного процесса пострадает огромное количество пользователей.Иногда причиной «фантомных» сеансов становится некорректное состояние файлов внутри самого кластера. Рассмотрим процедуру глубокой очистки:
C:\Program Files\1cv8\srvinfo).reg_1541) и внутри нее — папку sncfg. В этой директории хранятся конфигурационные данные о сеансах и процессах.sncfg, а также временные файлы из папок temp.Если мы выяснили, что ошибки носят информационный характер и не мешают работе пользователей (т.е. нет реальных жалоб на вылеты из программы), логично будет исключить их из технологического журнала, чтобы они не занимали место на диске. Разберем, как модифицировать файл logcfg.xml.
Добавим условие фильтрации по тексту исключения Descr. Пример настройки:
<log location="C:\Logs\1C\Exceptions" history="72">
<event>
<eq property="Name" value="EXCP"/>
<not>
<like property="Descr" value="*60c686dc-798f-4d17-aadb-a90156a16eb8*"/>
</not>
<not>
<like property="Descr" value="*Сеанс отсутствует или удален*"/>
</not>
</event>
</log>
Используя конструкцию <not> с оператором <like>, мы приказываем системе игнорировать записи, содержащие специфический GUID ошибки. Это позволит сфокусироваться на действительно критических проблемах, таких как Access Violation или ошибки СУБД — для их отслеживания предназначен мониторинг системных ошибок и логов 1С с уведомлением в Telegram.
Проанализируем взаимодействие между процессами на сетевом уровне. Кластер 1С использует динамический диапазон портов (по умолчанию 1560–1591). Если антивирусное ПО или встроенный брандмауэр Windows блокируют или «инспектируют» пакеты на этих портах, подтверждение активности сеанса (heartbeat) может не дойти от rphost до rmngr вовремя.
Рекомендация: Добавьте все исполняемые файлы 1С (ragent.exe, rmngr.exe, rphost.exe) в исключения антивируса и проверьте, чтобы диапазон портов 1540-1591 был полностью открыт для внутреннего трафика сервера.
Подводя итог, можно сказать, что ошибка «Сеанс отсутствует или удален» в ТЖ чаще всего является следствием высокой интенсивности работы фоновых заданий или особенностей работы динамических списков. Если платформа обновлена до актуальных релизов (где исправлены явные баги ППП), а ошибки продолжают сыпаться — используйте фильтрацию ТЖ. Это нормальная практика для администратора 1С: не бороться с «шумом» платформы, а грамотно его отсекать, оставляя ресурсы сервера для полезной работы.