К статье
Практический материал

Администрирование · 10 мин

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

Как найти и отключить зависших пользователей 1С: через консоль кластера, консольный клиент, SQL и перезапуск службы. Причины зависания сеансов и профилактика.

Зависший сеанс пользователя в 1С — это ситуация, когда сотрудник давно закрыл программу или его компьютер выключился, а сервер 1С продолжает считать соединение активным. Такие «призрачные» сеансы держат лицензии, блокируют обновление конфигурации, мешают монопольному доступу и занимают ресурсы сервера. Особенно остро проблема встаёт, когда нужно срочно обновить базу, а система сообщает, что с ней работают пользователи.

Убрать зависших пользователей можно несколькими способами: через консоль кластера серверов 1С, через консольный клиент (rac), запросом на стороне СУБД или перезапуском службы агента сервера. Выбор зависит от режима работы базы (файловый или клиент-серверный), количества зависших сеансов и того, есть ли у вас доступ к серверу.

Перед любыми действиями важно убедиться, что сеанс действительно «мёртвый», а не принадлежит сотруднику, который работает прямо сейчас. Принудительное отключение активного пользователя приведёт к потере несохранённых данных в открытых документах.

Как понять, что сеанс действительно завис

Прежде чем удалять сеанс, убедитесь, что он завис, а не просто бездействует. Признаки зависшего сеанса: компьютер пользователя выключен или перезагружен, но сеанс в консоли кластера отображается; время последнего вызова (Last Call) не обновляется длительное время; пользователь физически не может подключиться, потому что лицензия занята его же «призраком».

Типичные причины зависания сеансов: аварийное завершение работы клиента (зависание тонкого клиента, отключение питания, обрыв сети), разрыв VPN или RDP-сессии без корректного выхода из 1С, сбои на стороне сервера. Сервер 1С сам удаляет мёртвые соединения, но это происходит не мгновенно — по умолчанию проверка выполняется с некоторой периодичностью, и «призрак» может жить от нескольких минут до пары десятков минут.

Сеанс в консоли есть, ПК выключенЗависший сеанс

Смело удаляйте — соединение мёртвое

Last Call обновляетсяСеанс живой

Пользователь работает или клиент открыт — не отключайте без предупреждения

Лицензия занята, пользователь не может войтиПризрачная лицензия

Найдите старый сеанс этого пользователя и удалите его

Много зависших сеансов сразуПроблема сети или сервера

Проверьте стабильность сети и журналы сервера, а не только чистите сеансы

Удаление зависших сеансов через консоль кластера

Основной способ для клиент-серверного режима — консоль администрирования серверов 1С (1С:Центр администрирования / оснастка «Администрирование серверов»). Она устанавливается вместе с сервером 1С и доступна на сервере или на машине администратора.

Порядок действий в консоли кластера
  1. 1
    Откройте оснастку «Администрирование серверов 1С Предприятия» и подключитесь к нужному серверу
  2. 2
    Разверните кластер, затем ветку «Информационные базы» и выберите базу
  3. 3
    Перейдите на вкладку «Сеансы» — появится список активных сеансов
  4. 4
    Отсортируйте по времени последнего вызова или найдите сеансы нужного пользователя
  5. 5
    Выделите зависшие сеансы, щёлкните правой кнопкой и выберите «Удалить»
  6. 6
    Проверьте, что пользователь смог войти в базу и лицензия освободилась

Удаление сеанса через консоль — безопасная операция для самой базы: данные в СУБД не затрагиваются, разрывается только соединение. Однако если вы по ошибке удалите сеанс работающего сотрудника, его клиент завершится с ошибкой, а несохранённые данные (например, заполненный, но не записанный документ) будут потеряны.

Дополнительно в консоли можно посмотреть вкладку «Соединения»: иногда сеанс уже удалён, а соединение ещё висит и держит лицензию. Такие соединения тоже можно принудительно разорвать.

Отключение пользователей через утилиту rac

Когда графическая консоль недоступна или нужно отключить сеансы массово по расписанию, используется консольная утилита rac из состава сервера 1С. Она позволяет получить список сеансов и удалить их по идентификатору.

bash
rac session --cluster=<ID кластера> list --infobase=<ID базы>
rac session --cluster=<ID кластера> terminate --session=<ID сеанса>

Сначала командой rac cluster list узнают идентификатор кластера, затем rac infobase summary list — идентификатор базы. После этого выводится список сеансов и удаляются нужные. Утилиту удобно оборачивать в скрипты: например, автоматически завершать все сеансы перед ночным обновлением конфигурации.

Для работы rac требуются права администратора кластера, если аутентификация администраторов настроена. Учтите это при автоматизации — логин и пароль придётся передавать параметрами, поэтому ограничьте доступ к самому скрипту.

Что делать в файловом режиме

В файловой базе нет кластера серверов, поэтому зависшие сеансы проявляются иначе — через оставшиеся блокировки. Признак: база не открывается в монопольном режиме, хотя все вышли, или рядом с файлом базы остаются признаки активных подключений при работе по сети.

Действия в этом случае: проверьте, что 1С действительно закрыта на всех компьютерах (в том числе в трее и в диспетчере задач — процессы 1cv8.exe, 1cv8c.exe). Если база опубликована на веб-сервере, перезапустите службу веб-сервера (IIS или Apache) — это разорвёт все соединения. Если база лежит в сетевой папке, проверьте открытые файлы на файловом сервере (управление компьютером → открытые файлы) и закройте их вручную.

Кардинальные методы: перезапуск службы и чистка на стороне СУБД

Если зависших сеансов много или консоль кластера не отвечает, можно перезапустить службу «Агент сервера 1С:Предприятия». Это гарантированно разорвёт все соединения и освободит все лицензии. Минус очевиден: отключатся вообще все пользователи всех баз этого сервера, поэтому делайте это в нерабочее время или предупредите сотрудников.

В редких случаях блокировки остаются на уровне СУБД (MS SQL, PostgreSQL), когда сеанс 1С уже снят, а транзакция в базе «повисла». Тогда зависшие процессы ищут в Activity Monitor (MS SQL) или представлении pg_stat_activity (PostgreSQL) и завершают их. Это операция для администратора БД: завершение не той сессии может оборвать длинную транзакцию и вызвать откат изменений.

Сравнение способов отключения

Консоль кластера

Точечное удаление, безопасно; требует доступа к оснастке

Утилита rac

Подходит для массового отключения и автоматизации; нужно знать идентификаторы

Перезапуск службы агента

Гарантированно чистит всё, но отключает всех пользователей всех баз

Завершение процессов в СУБД

Помогает при зависших транзакциях; требует навыков администрирования БД

Профилактика: как уменьшить число зависших сеансов

Полностью исключить зависшие сеансы нельзя, но их количество и вред можно снизить настройкой кластера. В свойствах информационной базы в консоли кластера есть параметры «Интервал перезапуска», «Допустимый объём памяти» и, что важнее для нашей темы, таймауты разрыва соединений. Уменьшение времени ожидания разрыва соединения заставит сервер быстрее удалять мёртвые сеансы.

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

Типичные ошибки
01
Удаление сеанса без проверки Last Call — отключается работающий сотрудник и теряются его данные
02
Перезапуск службы агента в рабочее время — массовое отключение всех баз и недовольство пользователей
03
Завершение процессов rphost в диспетчере задач вместо штатных средств — риск аварийной остановки рабочих процессов
04
Игнорирование причины: если сеансы зависают постоянно, нужно чинить сеть или клиентские машины, а не чистить список каждый день
Контрольные точки

Как проверить результат

Список сеансов в консоли кластера
Норма

Зависших сеансов нет, остались только реальные пользователи

Тревожный признак

Удалённые сеансы появляются снова — клиент переподключается или проблема в сети

Вход пользователя в базу
Норма

Пользователь входит, лицензия выдаётся

Тревожный признак

Ошибка о нехватке лицензий — остались зависшие соединения

Монопольный режим
Норма

Устанавливается без ошибок

Тревожный признак

Сообщение об активных пользователях — сеансы или фоновые задания не сняты

Частые вопросы

Почему зависший сеанс не исчезает сам?

Сервер 1С проверяет живость соединений периодически, а не мгновенно. Обычно «призрак» исчезает в течение нескольких минут. Если сеанс висит дольше — удалите его вручную через консоль кластера и проверьте сетевые настройки таймаутов.

Потеряются ли данные при удалении сеанса?

Данные в базе не пострадают — разрывается только соединение. Но если сеанс принадлежал работающему пользователю, его несохранённые изменения (незаписанные документы, открытые формы) будут утеряны. Поэтому перед удалением проверяйте время последнего вызова.

Как отключить всех пользователей перед обновлением конфигурации?

Штатный путь — установить блокировку сеансов в консоли кластера (свойства информационной базы, параметр «Блокировка регламентных заданий» и код разрешения) или через типовую обработку «Блокировка работы пользователей» в конфигурациях на БСП. Затем дождаться выхода пользователей и удалить оставшиеся сеансы.

Лицензия занята, а сеанса в консоли нет. Что делать?

Проверьте вкладку «Соединения» в консоли кластера — лицензию может держать зависшее соединение без сеанса. Разорвите его. Если не помогает, перезапуск службы агента сервера гарантированно освободит все лицензии.

Как избавиться от зависших сеансов навсегда?

Полностью — никак, это особенность клиент-серверной архитектуры при нестабильной сети. Минимизировать проблему помогают: настройка таймаутов разрыва соединений, штатный выход пользователей из программы, стабильная сеть и автоматический скрипт очистки сеансов перед регламентными операциями.

Итог

Что важно запомнить

Зависшие сеансы безопаснее всего удалять через консоль кластера после проверки времени последнего вызова. Для массовой очистки используйте rac, а перезапуск службы агента оставьте как крайнюю меру на нерабочее время. Постоянные зависания — повод проверить сеть и настройки таймаутов кластера.