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

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

Зависшие соединения в 1С: как найти и удалить

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

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

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

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

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

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

В консоли кластера обратите внимание на колонки «Время последней активности» и «Прочитано/Записано». Если активность не меняется длительное время, а объём переданных данных заморожен, соединение, скорее всего, зависло. Однако фоновое задание, выполняющее тяжёлый расчёт на стороне СУБД, может выглядеть так же — поэтому проверяйте и список фоновых заданий в консоли.

Компьютер недоступен по pingКлиент выключен или отключён от сети

Соединение почти наверняка зависшее, можно удалять

Активность сеанса замерла, но rphost нагружает CPUИдёт обработка на сервере

Проверьте фоновые задания — возможно, сеанс живой

Пользователь жалуется на «зависшую» программуКлиент ждёт ответа сервера

Проверьте блокировки в СУБД, а не только соединения

Сеанс держится сутками без активностиТипичное «мёртвое» соединение

Безопасно завершить после проверки пользователя

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

Основной инструмент — консоль администрирования серверов 1С (1CV8 Servers.msc на Windows или аналогичная оснастка). Откройте консоль, разверните нужный кластер, затем ветку «Соединения». Здесь отображаются все активные соединения с указанием информационной базы, компьютера, приложения (тонкий клиент, фоновое задание, COM-соединение) и времени активности.

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

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

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

Если консоль недоступна или соединение не удаляется

Иногда консоль кластера отказывается удалять соединение или сам кластер «подвис». В этом случае помогает перезапуск службы агента сервера 1С (Агент сервера 1С:Предприятия) — все соединения разорвутся принудительно. Это грубый метод: прервутся и живые сеансы, поэтому применяйте его в нерабочее время или после предупреждения пользователей.

Зависшие сеансы и блокировки на уровне СУБД

Даже после удаления соединения в кластере 1С на стороне СУБД могут остаться активные сессии и блокировки. В Microsoft SQL Server это видно через Activity Monitor или запрос к sys.dm_exec_sessions; в PostgreSQL — через представление pg_stat_activity. Сессии с состоянием sleeping, удерживающие блокировки, — типичный источник ошибок «Конфликт блокировок при выполнении транзакции».

Удалить такую сессию можно командой KILL в SQL Server или pg_terminate_backend() в PostgreSQL, указав идентификатор процесса. Перед завершением убедитесь, что сессия не выполняет длительную транзакцию — принудительный разрыв вызовет откат, который на больших объёмах может занять заметное время и нагрузить сервер.

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

В файловом варианте нет кластера серверов, а блокировки хранятся в служебном файле 1Cv8.1CL рядом с файлом базы 1Cv8.1CD. Если база открыта по сети и клиент завис или отключился аварийно, запись о блокировке может остаться, и другие пользователи получат ошибку при входе или монопольном режиме.

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

Типичные ошибки
01
Удаление файла 1Cv8.1CD вместо 1Cv8.1CL — это сама база данных, последствие: потеря всех данных
02
Завершение соединений без проверки фоновых заданий — обрывается регламентная обработка, обмен данными остаётся в несогласованном состоянии
03
Перезапуск службы сервера 1С в рабочее время — у всех пользователей теряются несохранённые данные
04
Удаление соединения вместо снятия блокировки в СУБД — ошибка «Конфликт блокировок» возвращается
05
Очистка соединений без установки блокировки сеансов — пользователи переподключаются быстрее, чем администратор успевает начать обновление

Автоматизация очистки и профилактика

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

Для автоматического завершения неактивных сеансов можно использовать скрипты через RAC — консольную утилиту администрирования кластера. Она позволяет получить список соединений и сеансов и завершить их по условию, например по длительности неактивности. Такой скрипт удобно запускать по расписанию перед ночным обновлением или архивацией.

bash
rac connection list --cluster=<ID_кластера> | more
rac session terminate --cluster=<ID_кластера> --session=<ID_сеанса>

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

Маршрут решения

Как выбрать действие

Нужно убрать одно-два мёртвых соединения в рабочее времяУдалите их точечно через консоль кластера, предварительно проверив владельцев
Нужно освободить базу для обновления конфигурацииУстановите блокировку сеансов, отправьте сообщение пользователям, завершите сеансы группой
Ошибка блокировок сохраняется после чистки в кластереПроверьте и завершите зависшие сессии на стороне СУБД
Файловая база не пускает пользователей после сбояЗакройте открытые дескрипторы файла базы и удалите 1Cv8.1CL
Проблема повторяется ежедневноНастройте тайм-ауты кластера, автоочистку через RAC и проверьте сеть

Проверка результата после очистки

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

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

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

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

Остались только сеансы реальных пользователей

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

Сеансы от выключенных компьютеров по-прежнему висят

Установка монопольного режима
Норма

Режим включается без ошибок

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

Сообщение об активных соединениях

Ошибки «Конфликт блокировок» у пользователей
Норма

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

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

Ошибки повторяются — проверяйте сессии СУБД

Вход в файловую базу
Норма

База открывается штатно

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

Ошибка блокировки файла — остались открытые дескрипторы

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

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

Опасно ли удалять зависшее соединение — не потеряются ли данные?

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

Почему зависшие соединения появляются снова и снова?

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

Чем отличается соединение от сеанса в консоли кластера?

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

Можно ли удалить зависшие соединения без консоли кластера?

Да. Используйте утилиту командной строки RAC из состава сервера 1С — она умеет выводить список соединений и сеансов и завершать их по идентификатору. Крайний вариант — перезапуск службы агента сервера, который разрывает все соединения сразу, но это затрагивает и работающих пользователей.

Что делать, если файловая база пишет, что она заблокирована, хотя никто не работает?

На компьютере, где хранится база, откройте «Управление компьютером» → «Общие папки» → «Открытые файлы» и закройте зависшие дескрипторы файла базы. Если это не помогло, при всех закрытых сеансах удалите служебный файл 1Cv8.1CL — он пересоздастся автоматически. Файл 1Cv8.1CD трогать нельзя.

Как не дать пользователям зайти в базу, пока я чищу соединения?

В консоли кластера откройте свойства информационной базы и установите блокировку сеансов с указанием времени начала и сообщения для пользователей. Новые подключения будут отклоняться, а вы сможете спокойно завершить оставшиеся сеансы и выполнить обслуживание. Не забудьте снять блокировку после завершения работ.

Итог

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

Зависшие соединения удаляются через консоль кластера (ветки «Соединения» и «Сеансы») или утилиту RAC, в файловых базах — через закрытие дескрипторов и удаление 1Cv8.1CL. Перед удалением всегда проверяйте, что за соединением нет живого пользователя или фонового задания, а при массовой чистке сначала устанавливайте блокировку сеансов. Если проблема повторяется — настраивайте тайм-ауты и ищите причину в сети, а не чистите последствия вручную.