В процессе эксплуатации клиент-серверного варианта 1С:Предприятие 8.3 администраторы иногда сталкиваются со сложной ситуацией: в консоли администрирования серверов зависают активные сеансы пользователей, которые не удается принудительно завершить. При попытке удалить такую сессию штатным способом система выдает ошибку: «Ошибка удаления сеанса: Ошибка операции администрирования Ошибка формата потока».
При этом обычная перезагрузка службы сервера 1С или даже перезапуск физического сервера не приводят к желаемому результату. При повторном старте кластера зависшие сеансы снова появляются в списке активных сеансов и блокировок, мешая выгрузить информационную базу или выполнить регламентные работы. Проанализируем причину возникновения этой проблемы и разберем эффективные способы ее решения.
Рассмотрев архитектуру работы кластера 1С:Предприятие 8.3, можно выделить ключевые факторы, из-за которых сеансы становятся «неубиваемыми»:
snccntx* в каталоге реестра кластера (по умолчанию путь к ним выглядит как C:\Program Files\1cv8\srvinfo\reg_1541\...). При перезапуске службы менеджер кластера rmngr считывает данные из этих файлов и автоматически восстанавливает все незавершенные сессии.Для гарантированного удаления зависших сессий необходимо очистить файлы данных сеансов snccntx при полностью остановленной службе сервера 1С. Разберем порядок действий по шагам:
services.msc) и остановим службу агента сервера (например, 1C:Enterprise 8.3 Server Agent).rphost.exe, rmngr.exe и ragent.exe полностью завершены. Если процессы продолжают висеть в памяти, их необходимо завершить принудительно:
taskkill /T /F /IM rphost.exe
taskkill /T /F /IM rmngr.exe
C:\Program Files\1cv8\srvinfo\reg_1541\) и найдем файлы, имя которых начинается на snccntx. Удалим данные файлы, а также очистим папку временных файлов пользователя, под которым запускается служба 1С.Чтобы ускорить процесс выполнения этой процедуры в будущем, разберем пример командного скрипта (BAT-файла). Он автоматически останавливает службу, завершает зависшие процессы, очищает временные файлы сеансов и запускает службу заново:
set log=C:\scripts\1C_server_restart.log
echo Begin restart 1C:Server %date% %time% >> %log%
net stop "1C:Enterprise 8.3 Server Agent (x86-64)" >> %log%
ping 127.0.0.1 -n 15 >> NUL
taskkill /T /F /IM rphost.exe >> %log%
taskkill /T /F /IM rmngr.exe >> %log%
del /F /Q "C:\Program Files\1cv8\srvinfo\reg_1541\snccntx*" >> %log%
del /F /Q "C:\Users\USR1CV8\AppData\Local\Temp\*.*" >> %log%
net start "1C:Enterprise 8.3 Server Agent (x86-64)" >> %log%
echo End restart 1C:Server %date% %time% >> %log%
Если сервер 1С является продуктивным и останавливать службу целиком недопустимо, проанализируем точечный метод завершения конкретного рабочего процесса:
rphost.exe) висит проблемный сеанс.rphost.exe, PID которого соответствует зависшему сеансу:
taskkill /PID <Идентификатор_PID> /F
При этом кластер 1С автоматически перезапустит рабочий процесс, а сеансы, закрепленные за другими процессами rphost.exe, продолжат работу без прерывания.
Если графическая консоль MMC вылетает с ошибкой формата потока, обратимся к консольной утилите rac (Remote Admin Console), которая работает через службу ras (Remote Admin Service). Команды, отправляемые через rac, обращаются к менеджеру кластера напрямую, минуя графический интерфейс:
rac session --cluster=<ID_кластера> list --ib-name=<Имя_Базы>
session) и выполним команду его завершения:
rac session --cluster=<ID_кластера> terminate --session=<ID_сеанса>
Чтобы предотвратить повторное появление зависших сеансов в будущем, проанализируем параметры настройки самого кластера 1С:
1200–3600 секунд). По истечении этого времени система будет автоматически удалять неактивные соединения.rphost.exe (например, 86400 секунд — раз в сутки) или ограничение по объему виртуальной памяти. Это позволит регулярно обновлять рабочие процессы в автоматическом режиме без накопления «мусорных» данных в памяти.