Как убрать зависшие сеансы и очистить список активных пользователей в 1С?

Системный администратор 1С v8.3 (Обычные формы) 1С:Розница IT и автоматизация бизнеса
← На главную

В процессе администрирования 1С:Предприятия нередко возникает ситуация, когда в журнале Активные пользователи продолжают отображаться сеансы сотрудников, которые давно завершили работу или закрыли программу аварийно. Подобные сеансы-«призраки» не только искажают мониторинг, но и могут неправомерно занимать программные или аппаратные лицензии, а также препятствовать получению монопольного доступа к базе данных при обновлении конфигурации.

Проанализируем причины возникновения этой проблемы и разберем по шагам практические способы ее решения в терминальной среде (RDP) и в клиент-серверном варианте работы.

1. Завершение зависших процессов в среде терминального сервера (RDP)

Если пользователи подключаются к базе через Remote Desktop Services (терминальный сервер), отключение пользователя от сеанса (Disconnect) без явного выхода из 1С оставляет процесс 1cv8.exe активным в операционной системе сервера.

Разберем последовательность действий для администратора:

  1. Откроем Диспетчер задач на терминальном сервере с правами администратора (комбинацией клавиш Ctrl + Shift + Esc или через меню Ctrl + Alt + End при работе внутри RDP).
  2. Перейдем на вкладку Процессы (или Подробности в зависимости от версии ОС) и обязательно включим отображение процессов всех пользователей.
  3. Найдем зависшие процессы с именем 1cv8.exe или 1cv8c.exe, принадлежащие отключенным пользователям, и завершим их принудительно.
  4. Для предотвращения повторного появления проблемы настроим групповые политики терминального сервера или параметры коллекции сеансов: установим автоматическое завершение отключенных сеансов (Disconnected Session Limit) через 15–30 минут после разрыва связи.
  5. Настроим запуск 1С в качестве начального приложения при подключении к терминалу. В этом случае при закрытии окна программы терминальная сессия пользователя будет завершаться автоматически.

2. Удаление сеансов через консоль администрирования кластера серверов 1С

В клиент-серверном варианте работы (SQL) список активных подключений регистрируется кластером серверов 1С:Предприятия. Если клиентский сеанс разорвался некорректно, сервер приложений может удерживать его до истечения системных таймаутов.

Рассмотрим, как удалить зависшие сеансы вручную и автоматизировать этот процесс:

  1. Запустим утилиту Консоль администрирования серверов 1С:Предприятия.
  2. Раскроем дерево нужного кластера, перейдем в ветку Информационные базы, выберем рабочую базу и откроем список Сеансы.
  3. Найдем в списке зависшие сеансы, нажмем по ним правой кнопкой мыши и выберем пункт Удалить.
  4. Чтобы кластер серверов очищал такие сессии самостоятельно, откроем свойства информационной базы в консоли кластера и зададим параметры управления спящими сеансами:

    – Время засыпания пассивных сеансов: интервал неактивности, после которого сеанс переводится в спящий режим (например, 1200 секунд);

    – Время завершения спящих сеансов: интервал, по истечении которого спящий сеанс принудительно удаляется сервером (например, 600 секунд).

3. Очистка каталогов сеансов snccntx на сервере при аварийных сбоях

Бывают ситуации, когда после аварийной перезагрузки сервера 1С или физического хоста при попытке монопольного доступа система выдает ошибку о наличии активных сеансов, хотя в консоли администрирования и в диспетчере задач список пуст. Причина заключается в том, что информация о незавершенных сессиях зафиксировалась во временных файлах состояния кластера.

Выполним полную очистку зависших файлов состояния по официальной рекомендации:

  1. Остановим службу Агент сервера 1С:Предприятия (в оснастке services.msc).
  2. Перейдем в каталог данных сервера 1С. По умолчанию в ОС Windows он расположен по пути: C:\Program Files\1cv8\srvinfo\ (или C:\Program Files (x86)\1cv8\srvinfo\).
  3. Откроем каталог нужного кластера (вида reg_1541) и найдем внутри папки с префиксом snccntx... (например, snccntx00000000-0000-0000-0000-000000000000).
  4. Удалим все папки вида snccntx* (в них хранятся временные контексты сеансов). Сам каталог кластера и файл конфигурации 1CV8Reg.lst удалять не нужно.
  5. Запустим службу Агент сервера 1С:Предприятия. После этого база данных успешно освобождается для монопольного доступа.

4. Программное управление сеансами через COM-соединение

Для автоматизации регламентных работ и очистки зависших подключений можно использовать сценарии на платформе 1С с обращением к объекту COMConnector. Рассмотрим пример программного получения и отключения сеансов информационной базы:


Коннектор = Новый COMОбъект("V83.COMConnector");
СерверБазы = "Server1C:1540";
Агент = Коннектор.ConnectAgent(СерверБазы);
Кластеры = Агент.GetClusters();

Для Каждого Кластер Из Кластеры Цикл
    Агент.Authenticate(Кластер, "АдминистраторКластера", "Пароль");
    РабочиеПроцессы = Агент.GetWorkingProcesses(Кластер);
    
    Для Каждого Процесс Из РабочиеПроцессы Цикл
        Сеансы = Агент.GetSessions(Кластер);
        Для Каждого Сеанс Из Сеансы Цикл
            Если Сеанс.AppID = "1CV8" И Сеанс.UserName = "ИмяЗависшегоПользователя" Тогда
                Агент.TerminateSession(Кластер, Сеанс);
            КонецЕсли;
        КонецЦикла;
    КонецЦикла;
КонецЦикла;

5. Настройка системных таймаутов TCP Keep-Alive

Если пользователи работают через нестабильные каналы связи (VPN, удаленные офисы, Wi-Fi), операционная система сервера при обрыве связи может часами удерживать открытый сетевой сокет, считая сеанс 1С активным.

Для устранения зависания сетевых сокетов скорректируем системные параметры TCP/IP в реестре Windows на сервере приложений:

  1. Откроем редактор реестра regedit и перейдем в ветку: HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters.
  2. Создадим или изменим параметр типа DWORD с именем KeepAliveTime и зададим значение 300000 (5 минут в миллисекундах вместо стандартных 2 часов).
  3. Создадим параметр KeepAliveInterval со значением 1000 (интервал повтора проверочных пакетов — 1 секунда).
  4. Перезагрузим сервер для применения параметров сетевого стека. После этого операционная система будет своевременно определять разорванные соединения и уведомлять сервер 1С о необходимости завершения сеанса.
← На главную