Администрирование · 12 мин
Зависшие соединения в 1С: как найти и удалить
Как найти и удалить зависшие соединения в 1С: через консоль кластера серверов, консоль администрирования и командную строку. Причины, риски и профилактика.
Зависшее соединение — это сеанс связи клиента с сервером 1С или с файлом базы, который формально существует, но фактически не выполняет полезной работы: пользователь уже закрыл программу, компьютер выключился или сеть оборвалась, а сервер продолжает считать соединение активным. Такие «мёртвые» сеансы занимают лицензии, удерживают блокировки и мешают проведению регламентных операций — например, обновлению конфигурации или архивации базы.
Типичные признаки проблемы: пользователи видят сообщение «Конфликт блокировок» или «Соединение с сервером разорвано», при попытке обновления конфигурации база данных сообщает о наличии активных соединений, а в консоли кластера видны сеансы от компьютеров, которые давно выключены. В файловых базах симптом другой — при запуске появляется ошибка «Файл базы данных поврежден» или «Невозможно заблокировать файл», хотя никто в базе не работает.
Причины зависания обычно технические: аварийное завершение клиентского приложения, обрыв VPN или локальной сети, выключение компьютера пользователя кнопкой питания, сбой агента сервера 1С, а также длительные фоновые задания, которые внешне выглядят как зависшие сеансы. Прежде чем удалять соединение, важно отличить действительно «мёртвый» сеанс от медленной, но живой операции — иначе можно потерять несохранённые данные пользователя.
Как определить, что соединение действительно зависло
Не всякое долгое соединение — зависшее. Отличить «мёртвый» сеанс помогают косвенные признаки: отсутствие сетевой активности, нулевое потребление процессора процессом rphost, обслуживающим сеанс, и невозможность связаться с пользователем по указанному имени компьютера. Если компьютер, указанный в свойствах соединения, выключен или недоступен по ping — соединение почти наверняка мёртвое.
В консоли кластера обратите внимание на колонки «Время последней активности» и «Прочитано/Записано». Если активность не меняется длительное время, а объём переданных данных заморожен, соединение, скорее всего, зависло. Однако фоновое задание, выполняющее тяжёлый расчёт на стороне СУБД, может выглядеть так же — поэтому проверяйте и список фоновых заданий в консоли.
Соединение почти наверняка зависшее, можно удалять
Проверьте фоновые задания — возможно, сеанс живой
Проверьте блокировки в СУБД, а не только соединения
Безопасно завершить после проверки пользователя
Удаление соединений через консоль кластера серверов 1С
Основной инструмент — консоль администрирования серверов 1С (1CV8 Servers.msc на Windows или аналогичная оснастка). Откройте консоль, разверните нужный кластер, затем ветку «Соединения». Здесь отображаются все активные соединения с указанием информационной базы, компьютера, приложения (тонкий клиент, фоновое задание, COM-соединение) и времени активности.
Для удаления конкретного соединения выделите его в списке и выберите в контекстном меню команду «Удалить». Сервер разорвёт связь, а соответствующий сеанс завершится. Если нужно очистить все соединения базы — например, перед обновлением конфигурации — удобнее работать на уровне сеансов: ветка «Сеансы» позволяет отсортировать сеансы по базе и завершить их группой, предварительно установив блокировку сеансов, чтобы пользователи не подключились заново.
- 1Откройте консоль администрирования серверов 1С и разверните нужный кластер
- 2Установите блокировку сеансов информационной базы, если чистите все соединения
- 3Откройте ветку «Соединения» и отсортируйте по базе или компьютеру
- 4Проверьте, что за соединением нет живого пользователя или фонового задания
- 5Выделите зависшие соединения и выберите «Удалить» в контекстном меню
- 6Проверьте ветку «Сеансы» — осиротевшие сеансы завершите там же
- 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 удалять или переименовывать нельзя ни при каких обстоятельствах.
Автоматизация очистки и профилактика
Если зависшие соединения появляются регулярно, проблему лучше решать системно, а не ручной чисткой. В свойствах информационной базы в консоли кластера есть параметры «Интервал перезапуска» и «Допустимый объём памяти» рабочих процессов — корректная настройка уменьшает накопление «мусорных» сеансов. Также полезно настроить тайм-ауты разрыва неактивных соединений на уровне кластера.
Для автоматического завершения неактивных сеансов можно использовать скрипты через RAC — консольную утилиту администрирования кластера. Она позволяет получить список соединений и сеансов и завершить их по условию, например по длительности неактивности. Такой скрипт удобно запускать по расписанию перед ночным обновлением или архивацией.
rac connection list --cluster=<ID_кластера> | more
rac session terminate --cluster=<ID_кластера> --session=<ID_сеанса>Дополнительные меры профилактики: настройте в конфигураторе (Администрирование → Параметры информационной базы) автоматическое завершение сеансов, неактивных длительное время, если это допустимо для вашего режима работы. Стабилизируйте сеть и VPN — большинство «зависаний» рождается именно из-за обрывов связи. Обновляйте платформу: в ряде версий были исправлены ошибки, приводившие к накоплению мёртвых соединений.
Как выбрать действие
Проверка результата после очистки
После удаления соединений убедитесь, что цель достигнута: в консоли кластера список соединений и сеансов для базы пуст или содержит только реально работающих пользователей; монопольный режим устанавливается без ошибок; обновление конфигурации или архивация запускается штатно. Если ошибка блокировок сохраняется — источник находится глубже, на уровне СУБД или файловой системы.
Как проверить результат
Остались только сеансы реальных пользователей
Сеансы от выключенных компьютеров по-прежнему висят
Режим включается без ошибок
Сообщение об активных соединениях
Ошибки прекратились
Ошибки повторяются — проверяйте сессии СУБД
База открывается штатно
Ошибка блокировки файла — остались открытые дескрипторы
Если после всех мер зависшие соединения продолжают появляться массово, соберите технологический журнал сервера 1С и журналы СУБД за период сбоя — это поможет найти первопричину: конкретное фоновое задание, проблемный код конфигурации или сетевой сегмент, где рвутся подключения.
Частые вопросы
Опасно ли удалять зависшее соединение — не потеряются ли данные?
Для действительно «мёртвого» соединения удаление безопасно: клиент уже не работает, терять нечего. Риск возникает, только если сеанс на самом деле живой — тогда у пользователя закроется программа с потерей несохранённых данных. Поэтому перед удалением проверяйте компьютер и пользователя, указанные в свойствах соединения.
Почему зависшие соединения появляются снова и снова?
Чаще всего виноваты обрывы сети или VPN, аварийное завершение клиентов (выключение компьютера кнопкой), реже — ошибки платформы или «тяжёлые» фоновые задания. Разовая чистка не решает причину: настройте тайм-ауты неактивных сеансов в кластере и проверьте стабильность сети между клиентами и сервером.
Чем отличается соединение от сеанса в консоли кластера?
Соединение — это физический канал связи между клиентом и рабочим процессом сервера. Сеанс — логическая сессия пользователя или фонового задания в информационной базе. Одно соединение может обслуживать сеанс, и при разрыве соединения сеанс иногда остаётся висеть «осиротевшим» — поэтому после чистки соединений стоит проверить и ветку «Сеансы».
Можно ли удалить зависшие соединения без консоли кластера?
Да. Используйте утилиту командной строки RAC из состава сервера 1С — она умеет выводить список соединений и сеансов и завершать их по идентификатору. Крайний вариант — перезапуск службы агента сервера, который разрывает все соединения сразу, но это затрагивает и работающих пользователей.
Что делать, если файловая база пишет, что она заблокирована, хотя никто не работает?
На компьютере, где хранится база, откройте «Управление компьютером» → «Общие папки» → «Открытые файлы» и закройте зависшие дескрипторы файла базы. Если это не помогло, при всех закрытых сеансах удалите служебный файл 1Cv8.1CL — он пересоздастся автоматически. Файл 1Cv8.1CD трогать нельзя.
Как не дать пользователям зайти в базу, пока я чищу соединения?
В консоли кластера откройте свойства информационной базы и установите блокировку сеансов с указанием времени начала и сообщения для пользователей. Новые подключения будут отклоняться, а вы сможете спокойно завершить оставшиеся сеансы и выполнить обслуживание. Не забудьте снять блокировку после завершения работ.
Что важно запомнить
Зависшие соединения удаляются через консоль кластера (ветки «Соединения» и «Сеансы») или утилиту RAC, в файловых базах — через закрытие дескрипторов и удаление 1Cv8.1CL. Перед удалением всегда проверяйте, что за соединением нет живого пользователя или фонового задания, а при массовой чистке сначала устанавливайте блокировку сеансов. Если проблема повторяется — настраивайте тайм-ауты и ищите причину в сети, а не чистите последствия вручную.