Администрирование · 11 мин
1С: как бороться с зависшими сеансами
Практическое руководство по борьбе с зависшими сеансами 1С: как найти их в консоли кластера, завершить корректно, настроить автоочистку и предотвратить повторение.
Зависший сеанс 1С — это соединение пользователя или фонового процесса с сервером 1С:Предприятия, которое фактически не работает, но продолжает занимать лицензию, удерживать блокировки в базе и потреблять память рабочего процесса. Типичные симптомы: пользователь не может войти в базу, потому что «сеанс с таким пользователем уже активен», документ заблокирован невидимым сеансом, а производительность сервера проседает без видимой нагрузки.
Причины зависания обычно просты: обрыв сети между клиентом и сервером, аварийное закрытие клиентского приложения, «подвисший» толстый клиент на терминальном сервере, фоновые задания, ушедшие в бесконечное ожидание, и нештатные COM-соединения из внешних скриптов. Сервер 1С не всегда сразу замечает, что клиент исчез, поэтому сеанс продолжает числиться активным.
Бороться с зависшими сеансами нужно на трёх уровнях: оперативно находить и завершать их вручную, настраивать автоматическое завершение по тайм-ауту и устранять первопричины — сетевые обрывы, ошибки в коде фоновых заданий, некорректную работу интеграций. Дальше разберём каждый уровень с конкретными действиями.
Как распознать зависший сеанс и чем он опасен
Не каждый «старый» сеанс — зависший. Пользователь мог просто оставить программу открытой на ночь, и это нормальная ситуация. Признаки именно зависшего сеанса: время последней активности не меняется часами, объём прочитанных и записанных данных заморожен, клиентский компьютер выключен или недоступен, а сам пользователь утверждает, что давно вышел из программы.
Опасность зависших сеансов троякая. Во-первых, они удерживают клиентские лицензии — при дефиците лицензий реальные пользователи получают отказ во входе. Во-вторых, сеанс может держать управляемые блокировки данных, из-за чего коллеги не могут провести документы или закрыть период. В-третьих, каждый сеанс занимает память внутри рабочего процесса rphost, и накопление «мёртвых» сеансов ведёт к росту потребления памяти и деградации производительности всего кластера.
Не трогайте: пользователь работает, завершение оборвёт его данные
Проверьте, доступен ли компьютер пользователя и работает ли процесс 1cv8 на нём
Найдите старый сеанс этого пользователя и завершите его
Определите сеанс-владельца блокировки через консоль или техножурнал
Где смотреть список сеансов
Основной инструмент администратора — консоль управления кластером серверов 1С. Откройте оснастку «Администрирование серверов 1С:Предприятия», раскройте нужный кластер, затем ветку «Сеансы». Здесь видны все подключения: имя пользователя, база, компьютер, время начала, время последнего обращения, объём вызовов и потребляемая память.
Для сортировки удобно ориентироваться на колонку «Последний вызов»: сеансы, у которых последняя активность была несколько часов назад, а пользователь точно не работает, — первые кандидаты на завершение. Обратите внимание и на колонку «Спящий сеанс»: спящие сеансы тонкого клиента тоже занимают ресурсы, но завершаются по своим правилам.
Файловые базы не имеют кластера, поэтому там список подключений смотрят прямо из предприятия: меню «Администрирование» → «Активные пользователи». Возможности ограничены: можно послать сообщение и завершить сеанс, но детальной статистики по памяти и вызовам нет.
Как завершить зависший сеанс вручную
В консоли кластера выделите зависший сеанс и через контекстное меню выберите «Удалить». Сервер 1С разорвёт соединение и освободит лицензию и блокировки. Это основной способ разовой чистки, он безопасен для базы целиком, но не для данных того конкретного сеанса: всё, что пользователь не сохранил, будет потеряно.
Если сеансов много, удобнее действовать через утилиту администрирования rac из командной строки. Она позволяет получить список сеансов и завершить конкретный по его идентификатору, что легко автоматизировать скриптом.
rac session --cluster=<ID_кластера> list
rac session --cluster=<ID_кластера> terminate --session=<ID_сеанса>Альтернативный мягкий вариант — из режима предприятия через функцию «Активные пользователи» сначала отправить пользователю сообщение с просьбой выйти, а завершать принудительно только при отсутствии реакции. Для массовых операций в типовых конфигурациях на базе БСП есть обработка настройки блокировки сеансов, которая умеет и завершать сеансы по расписанию.
- 1Откройте консоль кластера и перейдите в раздел «Сеансы»
- 2Отсортируйте по времени последней активности и найдите подозрительные сеансы
- 3Убедитесь, что пользователь действительно не работает (позвоните или проверьте его компьютер)
- 4Завершите сеанс через контекстное меню «Удалить»
- 5Проверьте, что лицензия освободилась и блокировки сняты
- 6Если сеанс появился снова — ищите источник: фоновое задание, COM-подключение, авторестарт клиента
Автоматическое завершение: тайм-ауты кластера
Ручная чистка не масштабируется: если сеансы зависают регулярно, настройте автоматическое завершение. В свойствах кластера (консоль серверов, правый клик по кластеру → «Свойства») есть параметры, отвечающие за контроль соединений: интервал проверки и время, после которого не отвечающее соединение считается разорванным. Ключевые параметры — «Тайм-аут разрыва соединения» и «Интервал проверки разрыва»: сервер периодически опрашивает клиентов и завершает те соединения, которые не отвечают.
Подбирайте значения осмотрительно. Слишком агрессивный тайм-аут будет обрывать сеансы пользователей, которые просто долго не кликали мышью, но сидят в программе — например, читают длинный отчёт. Слишком мягкий — и зависшие сеансы будут копиться часами. Практичный подход: начать с умеренных значений, наблюдать неделю и корректировать по жалобам и статистике.
Дополнительно настраивается «засыпание» сеансов тонкого клиента: неактивный сеанс переводится в спящий режим, освобождая часть ресурсов, а затем завершается по отдельному тайм-ауту. Это компромисс между удобством пользователей (возврат в программу без повторного входа) и экономией ресурсов сервера.
Как выбрать действие
Зависшие фоновые задания и внешние подключения
Отдельная категория проблем — фоновые задания, которые «застряли»: обмен с сайтом, синхронизация между базами, тяжёлая обработка данных. Такой сеанс выглядит активным, но по факту крутится в бесконечном цикле или ждёт ответа от недоступного внешнего ресурса. Завершение сеанса в консоли кластера не всегда останавливает само задание корректно — надёжнее отменить задание через консоль заданий или программно, а затем разобраться с причиной зависания.
Частый источник «фантомных» сеансов — внешние интеграции: скрипты, подключающиеся через COM-connector, веб-сервисы и HTTP-сервисы, которые по ошибке не закрывают соединение. Каждый такой запуск плодит новый сеанс. Диагностика проста: в списке сеансов видно много однотипных подключений от одного пользователя-робота с одного сервера. Лечится исправлением кода интеграции, а не чисткой сеансов.
Профилактика: как не допустить повторения
Устойчивое решение строится на устранении причин. Проверьте стабильность сети между клиентами и сервером: обрывы VPN и Wi-Fi — главный генератор зависших сеансов. На терминальных серверах настройте завершение отключённых RDP-сессий по тайм-ауту, чтобы «забытые» сеансы Windows не удерживали клиентов 1С.
Полезны регламентные меры: скрипт, который по расписанию через rac анализирует сеансы и завершает те, что неактивны дольше заданного порога; мониторинг количества сеансов и памяти rphost с оповещением администратора; периодический анализ журнала регистрации на предмет ошибок фоновых заданий. Для разработчиков правило простое: любой код, открывающий соединение, обязан его закрывать, а длительные операции должны иметь контрольные точки и обработку прерывания.
Как проверить результат
Зависший сеанс исчез, лицензия освобождена
Сеанс появился снова от того же источника
Пользователь входит без ошибки дублирования сеанса
Ошибка повторяется — старый сеанс не завершён
Документы проводятся, конфликтов блокировок нет
Блокировка осталась — ищите другой сеанс-владелец
Потребление памяти rphost снизилось или стабилизировалось
Память продолжает расти — есть утечка или новые зависшие сеансы
Частые вопросы
Почему пользователь не может войти в 1С с ошибкой «сеанс уже активен»?
Сервер считает, что пользователь уже подключён: прежний сеанс не завершился из-за обрыва сети или аварийного закрытия клиента. Найдите старый сеанс этого пользователя в консоли кластера и завершите его — после этого вход станет возможен. Если ситуация повторяется у одного и того же сотрудника, проверьте стабильность его сетевого подключения.
Можно ли завершать сеансы без прав администратора кластера?
Из режима предприятия завершать сеансы может пользователь с правами на администрирование данных — через «Активные пользователи». Полный контроль, включая сеансы фоновых заданий и служебные подключения, доступен только администратору кластера серверов через консоль или утилиту rac.
Чем опасно завершение сеанса фонового задания?
Если задание выполняло обмен данными или запись в базу, принудительный обрыв может оставить операцию незавершённой: часть данных передана, часть нет. Перед завершением посмотрите в журнале регистрации, что делает задание, и по возможности отменяйте его штатно через консоль заданий, а не удалением сеанса.
Как автоматически чистить зависшие сеансы по расписанию?
Настройте в свойствах кластера тайм-аут разрыва соединений — сервер сам будет завершать не отвечающие соединения. Дополнительно можно написать скрипт на базе rac, который по расписанию получает список сеансов и завершает те, у которых последняя активность старше заданного порога, исключая важные служебные подключения.
Что делать, если сеансы зависают из-за терминального сервера?
Настройте в групповых политиках Windows лимиты сеансов: завершение отключённых RDP-сессий через заданное время и ограничение времени простоя. Тогда «забытый» сеанс Windows будет закрываться вместе с клиентом 1С, и осиротевшие соединения перестанут накапливаться.
Почему после удаления сеанса он появляется снова?
Значит, есть активный источник, который переподключается: работающий клиент с автореconnectом, регламентное задание, внешняя программа через COM или веб-сервис. Удаление сеанса лечит симптом. Найдите источник по компьютеру и имени пользователя в свойствах сеанса и устраните причину в его логике.
Что важно запомнить
Зависшие сеансы находят в консоли кластера по времени последней активности и завершают вручную или утилитой rac. Автоматическую защиту дают тайм-ауты разрыва соединений в свойствах кластера. Устойчивый результат достигается только устранением причин: обрывов сети, ошибок фоновых заданий и незакрытых соединений в интеграциях.