Почему расходуются сетевые лицензии 1С и как найти утечку в терминальной среде

Системный администратор 1C:Бухгалтерия IT и автоматизация бизнеса
← На главную

При использовании аппаратного USB-ключа HASP на большое количество рабочих мест в терминальной среде (RDP / Remote Desktop Services) нередко возникает ситуация, когда пользователи внезапно получают сообщение о нехватке свободных лицензий. При этом фактическое количество работающих сотрудников может быть заметно меньше номинала ключа, а утилита мониторинга лицензий показывает непонятные хосты или задвоенные подключения. Рассмотрим подробно причины такого поведения менеджера лицензий, разберем методику диагностики и настроим сервер для исключения перерасхода.

Диагностика аномалий в утилите мониторинга лицензий (HASP License Monitor)

Проанализируем ситуацию, когда в окне монитора лицензий напротив адреса 127.0.0.1 отображаются неизвестные внешние доменные имена. Утилита HASP License Monitor (или веб-интерфейс менеджера лицензий) не опрашивает удаленный DNS-сервер напрямую через ключ — она резолвит IP-адреса клиентов локально на том компьютере, где запущен сам монитор.

Если локальный адрес 127.0.0.1 сопоставляется со сторонним доменом, причина кроется в системном файле hosts на машине администратора:

  1. Откроем текстовый редактор с правами администратора и перейдем к файлу по пути C:\Windows\System32\drivers\etc\hosts.
  2. Проверим наличие строк, связывающих 127.0.0.1 со сторонними сайтами или сервисами обновлений. Подобные записи часто добавляются установщиками сторонних утилит или вредоносным ПО для блокировки внешних запросов.
  3. Удалим некорректную строку или приведем запись к стандартному виду: 127.0.0.1 localhost.
  4. Запустим монитор непосредственно на сервере, где физически установлен USB-ключ и запущена служба HASP Loader (hasplms), чтобы увидеть реальные имена хостов в локальной сети.

Механизм удержания лицензий отключенными сеансами RDP

Выясним, почему количество выданных лицензий превышает число активных пользователей. Ключевая особенность работы в терминальном режиме заключается в различии между завершением сеанса (Logoff) и отключением (Disconnect):

  1. Закрытие терминального окна «крестиком»: пользователь не закрывает 1С, а просто прерывает графическую сессию. Процесс 1cv8.exe или 1cv8c.exe остается в памяти сервера в активном состоянии и продолжает непрерывно удерживать лицензию в слоте ключа.
  2. Таймауты менеджера лицензий HASP: в сетевой стек менеджера лицензий заложен внутренний таймаут проверки активности (Keep-Alive). Если клиентский сеанс оборвался аварийно (например, при сетевом сбое или падении клиентской станции), менеджер освобождает занятый слот не мгновенно, а спустя определенное время (от нескольких минут до десятков минут).
  3. Запуск нескольких баз: при работе в рамках одной терминальной сессии под одной учетной записью Windows запуск нескольких файловых баз 1С обычно использует одну сетевую лицензию HASP. Однако, если пользователь подключается к разным серверам фермы RDS или запускает процессы от имени разных пользователей ОС, лицензия будет списываться на каждый узел и каждую учетную запись повторно.
  4. COM-соединения и фоновые задачи: внешние интеграции, подключения через COMConnector или запуск служебных баз для синхронизации расходуют отдельные лицензии, если для них создаются изолированные процессы.

Поиск «зомби»-процессов на терминальном сервере

Если окно программы закрыто, но лицензия остается занятой, проверим наличие зависших процессов 1С, оставшихся после аварийных сбоев файловой базы или некорректных блокировок. Запустим консоль PowerShell с правами администратора и выполним анализ запущенных процессов:


Get-Process -Name "1cv8*" | Select-Object Id, ProcessName, UserName, CPU, WorkingSet64

Если в списке обнаружены процессы пользователей, которые давно покинули рабочие места, такие процессы можно точечно завершить:

Stop-Process -Id 1234 -Force

Настройка политик завершения отключенных сеансов RDS

Чтобы избежать ситуации, когда отключенные пользователи держат лицензии сутками, настроим автоматическое завершение сеансов через редактор локальной групповой политики (gpedit.msc) или доменные политики GPO:

  1. Перейдем по пути: Конфигурация компьютера -> Административные шаблоны -> Компоненты Windows -> Службы удаленных рабочих столов -> Узел сеансов удаленных рабочих столов -> Ограничения по времени для сеансов.
  2. Найдем параметр «Задать предел времени для отключенных сеансов» (Set time limit for disconnected sessions). Переведем его в состояние Включено и выставим допустимое время, например, 15 или 30 минут. По истечении этого времени сервер выполнит корректный Logoff сеанса, закрыв процессы 1С и освободив лицензии.
  3. Для пользователей, оставляющих открытые программы на ночь, включим параметр «Задать предел времени для неактивных сеансов» (Idle session limit), установив ограничение в 2–3 часа.

Тонкая настройка файла nethasp.ini

Для ускорения обнаружения ключа и исключения паразитного широковещательного трафика настроим конфигурационный файл сетевого клиента HASP. Найдем файл nethasp.ini в каталоге bin\conf (или bin) платформы 1С на терминальном сервере и отредактируем следующие параметры:


[NH_COMMON]
NH_TCPIP = Enabled

[NH_TCPIP]
NH_SERVER_ADDR = 127.0.0.1
NH_USE_BROADCAST = Disabled
NH_SESSION = 2
NH_SEND_RCV = 2

Разберем назначение этих директив: мы отключаем широковещательные запросы (NH_USE_BROADCAST = Disabled), явно указываем адрес менеджера лицензий (127.0.0.1, если ключ на этом же сервере, либо локальный IP-адрес лицензионного сервера) и сокращаем время ожидания ответа при нестабильном канале.

Принудительный сброс зависших лицензий

Если исчерпание лицензий произошло критически и пользователи не могут войти в программу, применим оперативные меры:

  1. В окне HASP License Monitor перейдем к списку активных сессий, найдем зависшие сеансы по имени пользователя или IP-адресу и удалим их из списка вручную.
  2. Если утилита недоступна, перезапустим службу менеджера лицензий через командную строку Windows:

net stop "HASP Loader"
net start "HASP Loader"

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

← На главную