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

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

Как снять зависшие сеансы в 1С

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

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

Способ снятия сеанса зависит от режима работы базы. В клиент-серверном варианте основной инструмент — консоль администрирования серверов 1С, в файловом — список активных пользователей в конфигураторе или принудительное закрытие соединений на уровне файловой системы. Универсальный запасной вариант — перезапуск службы агента сервера 1С, но он затрагивает всех пользователей.

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

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

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

Признаки настоящего зависания: пользователь давно закрыл программу или выключил компьютер, но сеанс остаётся в списке; счётчики активности сеанса не меняются в течение длительного времени; сам пользователь не может войти в базу, потому что его «старый» сеанс занимает лицензию. Частая ситуация — обрыв VPN или Wi-Fi: клиент отвалился, а сервер ещё держит соединение.

Сеанс есть, клиент закрытТипичный «зомби»-сеанс

Уточните у пользователя, закрыта ли у него программа, и проверьте время бездействия сеанса

Растут счётчики памяти и СУБДИдёт реальная работа

Не снимайте сеанс — дождитесь завершения операции или свяжитесь с пользователем

Ошибки блокировок у другихСеанс держит блокировку данных

Найдите сеанс, удерживающий блокировку, и завершайте именно его

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

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

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

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

Чем сеанс отличается от соединения

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

Завершение сеансов в файловой базе

В файловом варианте нет кластера серверов, поэтому инструменты другие. Если база открыта и вы можете зайти в конфигуратор, перейдите в меню «Администрирование → Активные пользователи». В списке будут все подключённые сеансы; зависший можно выделить и завершить кнопкой «Завершить». Способ работает, только если у вас есть административные права в этой базе.

Если войти в конфигуратор невозможно (например, база монопольно заблокирована зависшим сеансом), действуйте на уровне операционной системы. На компьютере пользователя завершите процесс 1cv8.exe через диспетчер задач. Если база лежит в сетевой папке, а компьютер пользователя выключен или недоступен, на файловом сервере закройте открытые им файлы базы: в Windows это делается через «Управление компьютером → Общие папки → Открытые файлы».

Снятие сеансов на стороне СУБД и перезапуск службы сервера

Иногда сеанс не удаляется из консоли кластера или консоль недоступна. В этом случае можно завершить соответствующий процесс на стороне СУБД: в Microsoft SQL Server — через Activity Monitor или команду KILL с идентификатором процесса, в PostgreSQL — функцией pg_terminate_backend(pid). Это грубый метод: сервер 1С может некоторое время считать сеанс живым, поэтому после завершения процесса в СУБД проверьте и при необходимости удалите сеанс в консоли кластера.

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

sql
-- PostgreSQL: завершить зависший процесс по его PID
SELECT pg_terminate_backend(12345);

-- Найти подключения к базе перед завершением
SELECT pid, usename, state, query_start FROM pg_stat_activity WHERE datname = 'my_base';

Автоматическое завершение неактивных сеансов

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

Дополнительно платформа позволяет программно завершать сеансы через административный интерфейс (COM-соединение с агентом сервера или RAC — консольная утилита администрирования кластера). Скрипт на RAC удобно запускать по расписанию, чтобы ночью очищать зависшие сеансы и освобождать лицензии.

bash
# Список сеансов кластера через утилиту RAC
rac session --cluster=<ID_кластера> list

# Принудительное завершение сеанса
rac session --cluster=<ID_кластера> terminate --session=<ID_сеанса>

Типичные ошибки и риски

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

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

Типичные ошибки
01
Снятие сеанса с активной длительной операцией — обрыв транзакции и рассогласование данных
02
Удаление соединения вместо сеанса — лицензия и блокировки остаются занятыми
03
Перезапуск службы сервера без предупреждения — потеря несохранённых данных у всех пользователей
04
Завершение сеанса с регламентным заданием — сбой обмена или синхронизации
05
Работа без проверки результата — «зомби»-сеанс появляется снова, а причина (плохая сеть) не устранена

Проверка результата и профилактика зависаний

После снятия сеанса убедитесь, что проблема решена: сеанс исчез из списка в консоли, пользователь вошёл в базу, ошибки блокировок у коллег прекратились. Если сеанс появляется снова в том же виде, ищите причину: нестабильная сеть или VPN у пользователя, ошибки в коде конфигурации, приводящие к бесконечному циклу, нехватка ресурсов сервера.

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

Контрольные точки

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

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

Зависший сеанс отсутствует

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

Сеанс появился снова без действий пользователя

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

Вход выполняется, лицензия выдана

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

Ошибка «все лицензии заняты» или повторное зависание

Работа других пользователей
Норма

Ошибки блокировок прекратились

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

Блокировки сохраняются — искать другой сеанс-владелец

Часто задаваемые вопросы

Пропадут ли данные пользователя, если снять его сеанс?

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

Сеанс не удаляется из консоли кластера. Что делать?

Попробуйте удалить его повторно через минуту — иногда кластеру нужно время на обработку. Если не помогает, завершите процесс на стороне СУБД, а затем снова проверьте консоль. Крайний вариант — перезапуск службы агента сервера 1С с предупреждением пользователей.

Как снять все сеансы базы сразу?

В консоли кластера выделите все сеансы нужной базы в списке и нажмите «Удалить». Альтернатива — установить для базы режим блокировки сеансов с принудительным завершением существующих: это используется, например, перед обновлением конфигурации.

Почему после выключения компьютера пользователя его сеанс остаётся активным?

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

Чем отличается завершение сеанса от блокировки базы?

Завершение сеанса — точечное действие против конкретного подключения. Блокировка базы запрещает новые входы и по расписанию завершает текущие сеансы всех пользователей; она применяется для регламентных работ: обновления, резервного копирования, переноса данных.

Можно ли снять сеанс без прав администратора?

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

Итог

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

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