При переносе информационных баз «1С:Предприятие» на новый сервер системные администраторы и разработчики часто сталкиваются с аппаратными и программными сбоями. Одним из самых критичных и труднодиагностируемых сбоев является аварийное завершение работы системы во время выполнения регламентных процедур, таких как Тестирование и исправление (ТиИ). В этот момент на экране появляется критическая ошибка: «сеанс отсутствует или удален file=src\RMngrCalls.cpp» (в некоторых релизах платформы файл может называться ClusterDistrib.cpp или SeanceContextBasImpl.cpp).
Эта ошибка указывает на то, что рабочий процесс или клиентское приложение попытались обратиться к сеансу пользователя, данные которого менеджер кластера (rmngr) уже удалил или признал недействительными. В рамках данной статьи мы подробно разберем все возможные причины этой проблемы и по шагам рассмотрим эффективные методы ее решения.
Прежде чем переходить к практическим действиям, проанализируем архитектурную суть происходящего. В клиент-серверной архитектуре 1С за связь между клиентом и базой данных отвечает связка процессов менеджера кластера (rmngr) и рабочих процессов (rphost). Ошибка обращения к файлу RMngrCalls.cpp возникает тогда, когда эта связь внезапно обрывается. Это может произойти по следующим причинам:
rphost. Если рабочий процесс падает из-за нехватки оперативной памяти или критической внутренней ошибки (например, бесконечной рекурсии при обработке данных), все запущенные в его рамках сеансы мгновенно уничтожаются.Рассмотрим подробнее каждый метод устранения этой ошибки по шагам. Для планирования переезда на новую систему и сравнения условий сопровождения доступен раздел с решениями по миграции для подбора оптимального тарифа перехода.
Это одно из самых простых и одновременно действенных решений при переносе баз на новое «железо». На стороне сервера 1С часто накапливаются устаревшие временные файлы сеансов. Полный сброс сеансового кэша позволяет устранить внутренние логические противоречия в менеджере кластера. Контроль результата после миграции или доработок обеспечивает автоматическая сверка проводок между базами через COM-соединение.
Выполним очистку по следующему алгоритму:
services.msc), найдем службу Агент сервера 1С:Предприятия 8.3 (или 1C:Enterprise 8.3 Server Agent) и нажмем кнопку Остановить.C:\Program Files\1cv8\srvinfo\reg_1541\ (где reg_1541 — идентификатор вашего рабочего кластера).10dbf038-7da1-4475-b918-19e917d84f93).snccntx (а также любые папки вида snccntx*, если они существуют). В этих каталогах хранятся кэшированные данные контекста сеансов.Регламентная процедура тестирования и исправления создает колоссальную нагрузку на оперативную память сервера. Если в процессе выполнения проверки памяти физически не хватает или срабатывают жесткие ограничения кластера, операционная система принудительно убивает процесс rphost, что вызывает падение сеанса.
Проанализируем архитектуру сервера и выполним следующие действия:
rphost не сможет адресовать более 2-4 Гб оперативной памяти, независимо от того, сколько физической памяти установлено на сервере (даже если у вас доступно 64 Гб или 128 Гб RAM). При превышении этого лимита процесс мгновенно падает. При необходимости выполним миграцию на 64-битную платформу.Максимальный объем памяти рабочих процессов — этот параметр не должен душить процессы. Для проведения ТИИ рекомендуется временно увеличить его значение или установить в 0 (без ограничений).Безопасный расход памяти за один вызов — если этот лимит занижен, сервер прервет выполнение тяжелого запроса во время исправления таблиц. Увеличим это значение.rphost, чтобы изолировать регламентные процедуры от пользовательских сеансов.Если информационная база имеет внушительный объем, тестирование физической и логической целостности может выполняться часами. Менеджер кластера отслеживает активность клиентских соединений. Поскольку конфигуратор во время ТИИ выполняет монопольные низкоуровневые операции на СУБД, стандартный обмен пакетами «клиент-сервер» приостанавливается. Система может ошибочно посчитать сеанс мертвым.
Для предотвращения принудительного разрыва сеанса изменим параметры базы:
Часто падение процесса rphost провоцируют циклические ссылки в метаданных или в самих таблицах базы данных. Платформа 1С при попытке обойти дерево объектов или выполнить проверку ссылочной целостности попадает в бесконечную рекурсию. Память процесса переполняется за доли секунды, и операционная система аварийно его закрывает.
Разберем, как локализовать и обойти эту проблему:
RMngrCalls.cpp, выгрузим базу данных в файл выгрузки (.dt). Создадим локальную файловую базу на мощной рабочей станции и загрузим данные туда. Запустим тестирование и исправление в файловом режиме. Файловый движок более устойчив к утечкам памяти при рекурсиях и часто позволяет успешно завершить исправление поврежденных таблиц или выдать конкретную ошибку с указанием проблемного объекта метаданных. После успешного исправления выгрузим базу обратно в клиент-серверный вариант.Если ошибка возникает в процессах обмена данными или при обращении к внешним источникам данных через COM, причиной может стать некорректная регистрация библиотеки comcntr.dll в операционной системе Windows после переноса на новый сервер. Для быстрой проверки регистрации и версий библиотек можно использовать обработку для диагностики COM-соединения и конфликтов платформ.
Зарегистрируем библиотеку вручную с помощью системной утилиты:
regsvr32 "C:\Program Files\1cv8\8.3.22.1709\bin\comcntr.dll"
В случае успешного завершения операции операционная система выдаст диалоговое окно с подтверждением успешной регистрации модуля в реестре. Это восстановит корректную работу COM-соединений, исключая непредвиденный сброс связанных сеансов.
Если ваша база данных опубликована на веб-сервере IIS и ошибка «сеанс отсутствует» возникает при работе через веб-клиент или тонкий клиент по протоколам HTTP/HTTPS, дело может быть в изоляции пулов приложений.
Проанализируем конфигурацию веб-сервера IIS и внесем изменения:
w3wp.exe.Иногда сбой вызывают микроразрывы сетевого соединения между компонентами кластера. Процессы 1С общаются между собой по локальной сети через TCP/IP-сокеты. На современных ОС Windows Server по умолчанию включен протокол IPv6, приоритет которого выше, чем у IPv4. При некорректной маршрутизации или задержках DNS-сервера менеджер кластера теряет из виду рабочий процесс rphost, считая его отключенным.
Рекомендуется временно отключить IPv6 для диагностики и стабилизации работы:
hosts на сервере 1С:
127.0.0.1 localhost
192.168.1.10 MyNew1CServer
Это исключит задержки при разрешении имен процессов внутри локальной сети и стабилизирует связь между менеджером кластера и рабочими процессами.
Мы подробно разобрали все аппаратные и программные нюансы возникновения ошибки RMngrCalls.cpp. Последовательное выполнение описанных шагов позволит успешно завершить регламентное обслуживание вашей базы данных и обеспечить стабильную работу пользователей в новой серверной среде.