Зависшие сеансы 1С: как найти и завершить
Содержание
Зависший сеанс удаляется из консоли администрирования серверов 1С: ветка кластера → Сеансы → правой кнопкой по строке → Удалить. В файловой базе отдельной консоли нет — там закрывают все клиенты, а при упорной блокировке убирают файл 1Cv8.cdn, когда в базе точно никого не осталось.
Сеанс «зависает», когда клиент аварийно закрылся или потерял связь с сервером, а на кластере он числится активным. Такой сеанс держит блокировки, не даёт зайти в монопольном режиме и мешает обновить конфигурацию
или выгрузить .dt. Ниже — как отличить зависший сеанс от просто медленного, как снять его в серверной и файловой базе и как настроить автозавершение, чтобы не чистить вручную.
Как понять, что сеанс действительно завис
Прежде чем что-то завершать, убедитесь, что сеанс именно мёртв, а не выполняет долгую операцию (проведение, закрытие месяца , тяжёлый отчёт). Принудительно снятый живой сеанс = потеря несохранённых данных пользователя.
Признаки зависшего сеанса:
- 🔴 Клиентское окно не отвечает, «Нет ответа» в заголовке, но процесс не закрывается.
- 🔴 Другие пользователи не могут получить монопольный доступ: «Не удалось заблокировать информационную базу» или «База данных занята другим пользователем».
- 🔴 В консоли кластера у сеанса давно не меняется время последнего обращения, активных вызовов ноль, а блокировки висят.
- 🔴 Пользователь утверждает, что давно вышел, но его сеанс в списке активных.
Долгое проведение документа или регламентное задание выглядят похоже: окно «думает», блокировки есть. Разница в том, что у живого сеанса растёт счётчик вызовов и загрузка процессора рабочим процессом. Прежде чем удалять, спросите пользователя и посмотрите активные вызовы.
В клиент-серверном варианте сеансы обслуживают процессы кластера: агент сервера ragent, менеджер кластера rmngr и рабочие процессы rphost. Зависший сеанс обычно соответствует застрявшему вызову в одном из rphost. Увидеть это можно в консоли кластера по сеансу, а подробности аварии — в журнале регистрации базы (Администрирование → журнал регистрации) и в технологическом журнале сервера, если он включён. Для принятия решения «снимать или ждать» хватает двух цифр из консоли: активные вызовы и время последнего обращения.
1Cv8.cdn.Сначала попробуйте без грубой силы
Самый безопасный путь — закрыть клиент штатно, он сам снимет сеанс на сервере.
- На проблемной машине попросите пользователя закрыть 1С через крестик и дождаться.
- Если окно не реагирует — закройте процесс клиента. В диспетчере задач это
1cv8.exe(толстый или тонкий клиент) или1cv8c.exe. Снимайте только клиентский процесс на машине пользователя, а неrphostна сервере — рабочий процесс обслуживает всех. - Подождите 30–60 секунд. Кластер сам «увидит» обрыв соединения и уберёт сеанс по таймауту связи.
Часто этого достаточно: после закрытия клиента сеанс исчезает сам, и монопольный доступ освобождается. К консоли и утилитам переходите, только если сеанс не ушёл или до машины пользователя не добраться.
Если базу обслуживает серверный администратор, а у вас нет доступа к кластеру, не пытайтесь «снести» сеанс обходными путями. Сообщите администратору имя пользователя и время, когда сеанс завис, — он снимет его из консоли за минуту. В файловой базе, которую вы ведёте сами, доступ к сеансам есть всегда: он сводится к закрытию клиентов и, в крайнем случае, к файлу блокировки (ниже).
Удаление сеанса через консоль администрирования кластера
Это основной инструмент для серверной (клиент-серверной) базы.
Если консоль не открывается или список серверов пуст, сначала зарегистрируйте её библиотеку. Откройте командную строку от администратора и выполните регистрацию radmin.dll из каталога bin установленной платформы:
regsvr32 "C:\Program Files\1cv8\<номер версии>\bin\radmin.dll"
После этого оснастка «Администрирование серверов 1С Предприятия» подхватит кластер. Порядок удаления сеанса:
- Откройте консоль, разверните Central server → Кластеры → ваш кластер.
- Выберите ветку Сеансы. Появится список: пользователь, приложение (тонкий клиент, фоновое задание и т.д.), время начала, последняя активность.
- Найдите зависший сеанс. Ориентируйтесь на пользователя и на давно не менявшееся «Время последнего обращения».
- Правой кнопкой по строке → Удалить. Сеанс разрывается, его блокировки снимаются.
Если у кластера задан администратор, консоль спросит логин и пароль администратора кластера (не базы). Это нормально.
Чтобы не ошибиться строкой, отсортируйте список по времени последнего обращения и сопоставьте сеанс с конкретным пользователем и приложением (колонка с типом клиента). Зависший сеанс легко узнать: активность нулевая, время обращения старое, а сам сеанс всё ещё в списке.
Рядом есть ветка Соединения — там видны низкоуровневые соединения с базой. Иногда сеанс снят, а соединение фонового процесса ещё висит; его тоже можно завершить через Удалить. С соединениями работайте аккуратно: за ними могут стоять регламентные задания.
Завершение работы пользователей из режима «Предприятие»
В типовых конфигурациях на БСП (Бухгалтерия 3.0, ЗУП 3.1, УТ 11, ERP) администратор может завершить сеансы, не заходя на сервер.
Путь: НСИ и администрирование (или Администрирование) → Обслуживание → Блокировка работы пользователей. В открывшейся форме задаётся время блокировки и код разрешения, после чего система завершает активные сеансы и не пускает новых.
Что здесь важно:
- Этот режим завершает все пользовательские сеансы, а не один конкретный. Он удобен перед обновлением или техобслуживанием, а не для точечного снятия одного зависшего клиента.
- Форма
Администрирование→Активные пользователи(илиПользователи онлайн) показывает, кто в базе, но завершить чужой сеанс оттуда обычным образом нельзя — только увидеть. - Код разрешения, заданный при блокировке, затем передают в параметр запуска, чтобы администратор мог зайти в заблокированную базу. Запомните его.
Блокировка работы пользователей оборвёт всех. Включайте её, предупредив людей, и только когда действительно нужно освободить базу целиком.
Снятие блокировок и выход в монопольный режим
Монопольный доступ к базе нужен не для всего — только для обновления структуры конфигурации, загрузки .dt, тестирования и исправления (ТиИ) и части административных операций. Зависший сеанс чаще всего мешает именно этим действиям.
Логика простая: монопольный режим требует, чтобы в базе не было ни одного другого сеанса. Пока висит осиротевший сеанс — вы получите отказ. Поэтому порядок такой:
- Снимите зависший сеанс (консоль кластера или rac — см. ниже).
- Убедитесь, что ветка Сеансы пуста или содержит только ваш сеанс.
- Повторите операцию, требующую монополии.
Если база упорно «занята», а сеансов не видно, причина — не отпущенная транзакционная или управляемая блокировка. Такие блокировки живут внутри сеанса: отдельной кнопки «снять блокировку» нет, корректный способ один — завершить сам сеанс, который её держит. В серверной базе блокировка исчезнет вместе с сеансом автоматически. В файловой базе блокировки хранит служебный файл в каталоге базы:
1Cv8.1CD— сам файл базы, его не трогаем;1Cv8.cdn— файл службы блокировок; существует, пока база открыта.
Если все клиенты закрыты, процессы 1cv8.exe в диспетчере отсутствуют, а база всё равно не открывается монопольно — закройте 1С на всех машинах, проверьте, что процессов не осталось, и только тогда удалите 1Cv8.cdn. При живом подключении его удалять нельзя, повредите данные сеансов. После удаления файл создастся заново при следующем открытии базы.
Перед любыми операциями с файлами базы или перед ТиИ сделайте резервную копию каталога базы целиком. Это единственная страховка, если что-то пойдёт не так.
Автоматизация через утилиту rac
Когда консоль под рукой нет, а до сервера есть доступ по SSH или RDP, сеансы снимает консольная утилита администрирования кластера rac (лежит в каталоге bin платформы). Она же удобна для скриптов.
Общий порядок — узнать кластер, найти сеанс, завершить его:
rac cluster list
rac session list --cluster=<uuid-кластера>
rac session terminate --cluster=<uuid-кластера> --session=<uuid-сеанса>
rac cluster listвыводит идентификатор кластера (полеcluster).rac session listпоказывает сеансы с ихsession-идентификаторами, именем пользователя и приложением.rac session terminateразрывает конкретный сеанс по его uuid.
Если у кластера задан администратор, добавьте параметры авторизации кластера (--cluster-user и --cluster-pwd). Точные имена остальных параметров и подкоманд смотрите в rac help и rac session help — не полагайтесь на память, синтаксис зависит от версии платформы.
rac session terminate завершает сеанс мгновенно, без подтверждения. Проверьте дважды, что в --session подставлен именно нужный uuid, иначе оборвёте активного пользователя.
Для разовой чистки одного зависшего клиента консоль нагляднее. rac выигрывает, когда нужно снять сеанс по расписанию или встроить снятие в скрипт обслуживания — например, автоматически завершать сеансы перед ночным обновлением. Чтобы rac заработал, на машине должен быть запущен сервер администрирования ras; если команда не отвечает, проверьте, что служба ras поднята и слушает нужный порт.
Как настроить автозавершение и реже чистить вручную
Большую часть осиротевших сеансов можно гасить автоматически — настройками самой базы в консоли кластера. Откройте свойства информационной базы (правой кнопкой по базе → свойства) и задайте два таймаута:
| Параметр | Что делает | Ориентир |
|---|---|---|
| Время засыпания пассивного сеанса, сек | Через сколько бездействия сеанс переводится в «спящий» | 600–1200 |
| Время завершения спящего сеанса, сек | Через сколько спящий сеанс завершается полностью | 1800–3600 |
С такими настройками клиент, у которого оборвалась связь или который просто забыли закрыть на ночь, уснёт и затем завершится сам. Значения подбирайте под свой регламент: слишком короткие будут выкидывать людей из тяжёлых операций.
Дополнительно в свойствах рабочего сервера и кластера есть перезапуск рабочих процессов по времени или по объёму занятой памяти — он помогает против «подвисающих» и раздувшихся процессов rphost, но это уже про стабильность сервера, а не про один сеанс. Перезапуск планируйте на ночь или на окно обслуживания: в момент рестарта процесса его сеансы переносятся или обрываются.
Если чистка сеанса — часть подготовки к обновлению, удобнее не ловить новые сеансы по одному, а запретить их старт. В свойствах базы в консоли кластера включите блокировку начала сеансов и задайте код разрешения; тем же кодом администратор потом зайдёт в базу через параметр запуска /UC <код>. После обновления блокировку снимают, и пользователи заходят как обычно.
Частые вопросы
Чем сеанс отличается от соединения в консоли кластера?
Можно ли снять зависший сеанс, не выгоняя остальных?
rac session terminate снимают один конкретный сеанс по его идентификатору. Блокировка работы пользователей из режима «Предприятие», наоборот, завершает всех — её применяют только перед общим обслуживанием.Что делать, если зависших сеансов нет, а база всё равно занята?
1cv8.exe. В файловой базе причиной бывает не удалённый файл блокировки 1Cv8.cdn — его убирают, только когда в базе точно никого нет.Опасно ли завершать процесс rphost на сервере, чтобы снять сеанс?
rphost — рабочий процесс кластера, он обслуживает многих пользователей. Его перезапуск оборвёт все сеансы в этом процессе. Снимайте конкретный сеанс через консоль или rac, а не процесс целиком.