В процессе администрирования 1С:Предприятия нередко возникает ситуация, когда в журнале Активные пользователи продолжают отображаться сеансы сотрудников, которые давно завершили работу или закрыли программу аварийно. Подобные сеансы-«призраки» не только искажают мониторинг, но и могут неправомерно занимать программные или аппаратные лицензии, а также препятствовать получению монопольного доступа к базе данных при обновлении конфигурации.
Проанализируем причины возникновения этой проблемы и разберем по шагам практические способы ее решения в терминальной среде (RDP) и в клиент-серверном варианте работы.
Если пользователи подключаются к базе через Remote Desktop Services (терминальный сервер), отключение пользователя от сеанса (Disconnect) без явного выхода из 1С оставляет процесс 1cv8.exe активным в операционной системе сервера.
Разберем последовательность действий для администратора:
Ctrl + Shift + Esc или через меню Ctrl + Alt + End при работе внутри RDP).1cv8.exe или 1cv8c.exe, принадлежащие отключенным пользователям, и завершим их принудительно.В клиент-серверном варианте работы (SQL) список активных подключений регистрируется кластером серверов 1С:Предприятия. Если клиентский сеанс разорвался некорректно, сервер приложений может удерживать его до истечения системных таймаутов.
Рассмотрим, как удалить зависшие сеансы вручную и автоматизировать этот процесс:
– Время засыпания пассивных сеансов: интервал неактивности, после которого сеанс переводится в спящий режим (например, 1200 секунд);
– Время завершения спящих сеансов: интервал, по истечении которого спящий сеанс принудительно удаляется сервером (например, 600 секунд).
Бывают ситуации, когда после аварийной перезагрузки сервера 1С или физического хоста при попытке монопольного доступа система выдает ошибку о наличии активных сеансов, хотя в консоли администрирования и в диспетчере задач список пуст. Причина заключается в том, что информация о незавершенных сессиях зафиксировалась во временных файлах состояния кластера.
Выполним полную очистку зависших файлов состояния по официальной рекомендации:
services.msc).C:\Program Files\1cv8\srvinfo\ (или C:\Program Files (x86)\1cv8\srvinfo\).reg_1541) и найдем внутри папки с префиксом snccntx... (например, snccntx00000000-0000-0000-0000-000000000000).snccntx* (в них хранятся временные контексты сеансов). Сам каталог кластера и файл конфигурации 1CV8Reg.lst удалять не нужно.Для автоматизации регламентных работ и очистки зависших подключений можно использовать сценарии на платформе 1С с обращением к объекту COMConnector. Рассмотрим пример программного получения и отключения сеансов информационной базы:
Коннектор = Новый COMОбъект("V83.COMConnector");
СерверБазы = "Server1C:1540";
Агент = Коннектор.ConnectAgent(СерверБазы);
Кластеры = Агент.GetClusters();
Для Каждого Кластер Из Кластеры Цикл
Агент.Authenticate(Кластер, "АдминистраторКластера", "Пароль");
РабочиеПроцессы = Агент.GetWorkingProcesses(Кластер);
Для Каждого Процесс Из РабочиеПроцессы Цикл
Сеансы = Агент.GetSessions(Кластер);
Для Каждого Сеанс Из Сеансы Цикл
Если Сеанс.AppID = "1CV8" И Сеанс.UserName = "ИмяЗависшегоПользователя" Тогда
Агент.TerminateSession(Кластер, Сеанс);
КонецЕсли;
КонецЦикла;
КонецЦикла;
КонецЦикла;
Если пользователи работают через нестабильные каналы связи (VPN, удаленные офисы, Wi-Fi), операционная система сервера при обрыве связи может часами удерживать открытый сетевой сокет, считая сеанс 1С активным.
Для устранения зависания сетевых сокетов скорректируем системные параметры TCP/IP в реестре Windows на сервере приложений:
regedit и перейдем в ветку: HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters.KeepAliveTime и зададим значение 300000 (5 минут в миллисекундах вместо стандартных 2 часов).KeepAliveInterval со значением 1000 (интервал повтора проверочных пакетов — 1 секунда).