← На главную
В процессе разработки и отладки конфигураций 1С разработчики нередко сталкиваются с ситуацией: клиентское приложение 1С:Предприятие закрыто (в диспетчере задач процесс завершен), однако в Конфигураторе в списке доступных предметов отладки клиент продолжает отображаться еще несколько минут. При этом в консоли администрирования кластера сеанс остается активным, и у него периодически обновляется время последней активности. Разберем по шагам, почему возникает такое поведение, как диагностировать скрытые сетевые проблемы и какие системные настройки помогут ускорить очистку неактивных сеансов.
Причины сохранения сеанса и предмета отладки на сервере
Проанализируем механику взаимодействия клиентского приложения, сервера 1С и модуля отладки. Зависание предмета отладки и сеанса обычно обусловлено следующими факторами:
- Потеря пакетов завершения соединения (TCP FIN/RST): При штатном закрытии клиента операционная система отправляет серверу пакеты о закрытии сокета. Если в локальной сети или на виртуальном сетевом адаптере произошел сбой, серверный процесс
rphost не получает сигнал о разрыве соединения и считает TCP-сессию «полуоткрытой» (Half-Open), продолжая удерживать сеанс.
- Механизм Heartbeat отладчика: Конфигуратор и сервер отладки периодически опрашивают зарегистрированные клиенты. При отсутствии явного уведомления об отключении дерегистрация предмета отладки происходит только по истечении внутреннего таймаута ожидания отклика.
- Длительное освобождение внешних компонент: Если в конфигурации используются внешние компоненты или неуправляемый COM-код, при закрытии приложения рабочий процесс может ожидать завершения освобождения ресурсов библиотек.
- Аппаратные оптимизации сетевых карт (Offloading): После миграции на более новые версии Windows Server включенные по умолчанию механизмы разгрузки сетевого адаптера могут некорректно обрабатывать таймауты сброса соединений.
Диагностика сетевого стека и клиентского окружения
Если сеанс продолжает висеть после закрытия программы, выясним причину с помощью проверки сетевого канала:
- Проверим доступность сетевых ресурсов: зависание сокетов часто проявляется в виде задержек при открытии общих папок (SMB) или временных фризов сетевых служб, даже если RDP-сессия субъективно продолжает работать без видимых разрывов.
- Проверим наличие зависших процессов: убедимся через диспетчер задач или системный монитор, что на клиентской машине действительно завершены процессы
1cv8.exe, 1cv8c.exe и вспомогательные хост-процессы.
- Выполним перезапуск сетевого интерфейса или рабочей станции разработчика, если сетевой стек операционной системы перестал корректно освобождать дескрипторы сокетов.
Настройка таймаутов спящих сеансов в кластере 1С
Чтобы сервер 1С быстрее завершал зависшие подключения и не держал неактивные сеансы, настроим параметры информационной базы в консоли администрирования кластера серверов 1С:
- Откроем консоль Администрирование серверов 1С:Предприятия.
- Перейдем в ветку нужного кластера, раскроем список Информационные базы и откроем свойства рабочей базы.
- Установим параметр Время засыпания пассивного сеанса (например,
120 секунд), чтобы кластер переводил сеанс без сетевой активности в спящий режим.
- Установим параметр Время завершения спящего сеанса (например,
60 секунд), по истечении которого сервер принудительно удалит сеанс из списка активных и освободит лицензию.
Корректировка параметров TCP Keep-Alive в Windows Server
По умолчанию в операционных системах Windows период проверки «живучести» TCP-соединения составляет 2 часа. Если пакет завершения соединения был потерян, сервер будет удерживать сокет открытым до истечения этого интервала. Оптимизируем настройки сетевого стека на сервере через системный реестр:
- Откроем редактор реестра (команда
regedit).
- Перейдем в раздел:
HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters.
- Создадим или изменим параметр типа
DWORD (32 бита) с именем KeepAliveTime и зададим значение 300000 в десятичной системе счисления (соответствует 5 минутам).
- Создадим параметр типа
DWORD (32 бита) с именем KeepAliveInterval и установим значение 1000 (интервал повторных проверок — 1 секунда).
- Перезагрузим сервер для применения новых параметров TCP/IP.
Отключение аппаратных разгрузок сетевой карты (Offloading)
При смене операционной системы (например, при переходе на более свежие версии Windows Server) аппаратные функции сетевых адаптеров могут приводить к зависанию TCP-сокетов. Выполним корректировку свойств сетевой карты:
- Откроем Диспетчер устройств на сервере и найдем основной сетевой адаптер.
- Откроем свойства адаптера и перейдем на вкладку Дополнительно (Advanced).
- Отключим параметры IPv4 Large Send Offload (LSO), TCP Checksum Offload и энергосберегающие функции (Energy Efficient Ethernet / Green Ethernet), установив их в значение
Disabled.
- Нажмем ОК для сохранения настроек сетевого интерфейса.
Корректная работа с отладчиком в Конфигураторе
Рассмотрим рекомендации, которые помогут избежать зависания предметов отладки в повседневной работе:
- Завершение через Конфигуратор: Вместо закрытия окна программы крестиком или через системное меню используем команду меню Конфигуратора «Отладка — Завершить» или комбинацию клавиш Shift + F5. В этом случае Конфигуратор отправляет явную команду на отсоединение и корректно освобождает сокеты.
- Ручное отключение зависшего предмета: Если сеанс уже завис, откроем меню «Отладка — Подключение...», выделим зависший клиентский процесс и нажмем кнопку «Отключить».
- Использование протокола HTTP для отладки: На платформе 1С 8.3 рекомендуется использовать отладку по протоколу HTTP (запуск службы сервера с ключами
-debug -http либо использование отдельного сервера отладки dbgs), так как данный механизм более устойчив к временным сетевым сбоям по сравнению с классическим TCP-режимом.