При использовании аппаратного USB-ключа HASP на большое количество рабочих мест в терминальной среде (RDP / Remote Desktop Services) нередко возникает ситуация, когда пользователи внезапно получают сообщение о нехватке свободных лицензий. При этом фактическое количество работающих сотрудников может быть заметно меньше номинала ключа, а утилита мониторинга лицензий показывает непонятные хосты или задвоенные подключения. Рассмотрим подробно причины такого поведения менеджера лицензий, разберем методику диагностики и настроим сервер для исключения перерасхода.
Проанализируем ситуацию, когда в окне монитора лицензий напротив адреса 127.0.0.1 отображаются неизвестные внешние доменные имена. Утилита HASP License Monitor (или веб-интерфейс менеджера лицензий) не опрашивает удаленный DNS-сервер напрямую через ключ — она резолвит IP-адреса клиентов локально на том компьютере, где запущен сам монитор.
Если локальный адрес 127.0.0.1 сопоставляется со сторонним доменом, причина кроется в системном файле hosts на машине администратора:
C:\Windows\System32\drivers\etc\hosts.127.0.0.1 со сторонними сайтами или сервисами обновлений. Подобные записи часто добавляются установщиками сторонних утилит или вредоносным ПО для блокировки внешних запросов.127.0.0.1 localhost.HASP Loader (hasplms), чтобы увидеть реальные имена хостов в локальной сети.Выясним, почему количество выданных лицензий превышает число активных пользователей. Ключевая особенность работы в терминальном режиме заключается в различии между завершением сеанса (Logoff) и отключением (Disconnect):
1cv8.exe или 1cv8c.exe остается в памяти сервера в активном состоянии и продолжает непрерывно удерживать лицензию в слоте ключа.COMConnector или запуск служебных баз для синхронизации расходуют отдельные лицензии, если для них создаются изолированные процессы.Если окно программы закрыто, но лицензия остается занятой, проверим наличие зависших процессов 1С, оставшихся после аварийных сбоев файловой базы или некорректных блокировок. Запустим консоль PowerShell с правами администратора и выполним анализ запущенных процессов:
Get-Process -Name "1cv8*" | Select-Object Id, ProcessName, UserName, CPU, WorkingSet64
Если в списке обнаружены процессы пользователей, которые давно покинули рабочие места, такие процессы можно точечно завершить:
Stop-Process -Id 1234 -Force
Чтобы избежать ситуации, когда отключенные пользователи держат лицензии сутками, настроим автоматическое завершение сеансов через редактор локальной групповой политики (gpedit.msc) или доменные политики GPO:
Для ускорения обнаружения ключа и исключения паразитного широковещательного трафика настроим конфигурационный файл сетевого клиента 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-адрес лицензионного сервера) и сокращаем время ожидания ответа при нестабильном канале.
Если исчерпание лицензий произошло критически и пользователи не могут войти в программу, применим оперативные меры:
net stop "HASP Loader"
net start "HASP Loader"
Перезапуск службы моментально очищает всю внутреннюю таблицу выданных слотов памяти ключа. Пользователи, продолжающие активную работу в 1С, автоматически подтвердят захват лицензии при следующем обращении к базе, а все брошенные и зависшие сессии будут окончательно закрыты.