При активной эксплуатации сетевых аппаратных ключей защиты USB (HASP) системные администраторы часто сталкиваются с ситуацией, когда физическое количество работающих сотрудников значительно меньше номинала ключа, но 1С выдает ошибку о нехватке свободных лицензий. Даже после принудительного завершения всех терминальных сессий RDP и клиентских приложений 1С занятые слоты на ключе продолжают удерживаться. Разберем причины такого поведения и рассмотрим проверенные способы освобождения лицензий без перезагрузки сервера и без выгрузки активных пользователей.
Проанализируем основные причины возникновения «фантомных» зависших лицензий:
HASP Loader освобождает слот только по внутреннему таймауту keep-alive. Если сетевой сокет «завис», менеджер лицензий может бесконечно считать клиента активным.Рассмотрим самый быстрый и действенный способ сбросить зависшие сессии на аппаратном ключе без прерывания работы пользователей. Служба сетевого менеджера лицензий хранит текущую таблицу занятых слотов в оперативной памяти. Если перезапустить службу за минимальный интервал времени (1–2 секунды), таблица очистится, а активные клиенты 1С не потеряют связь, так как платформа 1С опрашивает ключ циклически с интервалом в несколько минут.
Посмотрим на пример командного файла (.bat или .cmd), который необходимо запускать с правами администратора на том сервере, где физически установлен USB-ключ и запущена служба менеджера лицензий:
net stop "Hasp Loader"
timeout /T 1 /NOBREAK
net start "Hasp Loader"
Разберем по шагам, как работает данный сценарий:
net stop "Hasp Loader" останавливает службу сетевого менеджера лицензий, сбрасывая всю накопленную таблицу сокетов и зависших клиентов.timeout /T 1 /NOBREAK задает паузу ровно в 1 секунду для корректного освобождения USB-порта драйвером операционной системы.net start "Hasp Loader" заново запускает службу. Работающие клиенты 1С при следующем плановом опросе ключа прозрачно зарегистрируются заново, а все отключенные и зависшие сеансы освободят свои слоты.Если раздача лицензий настроена через сервер 1С:Предприятия, перезапуск HASP Loader может помочь лишь временно, так как серверные процессы rphost повторно захватят слоты под существующие внутренние соединения. Рассмотрим, как очистить серверные сеансы:
Чтобы исключить повторение проблемы нехватки лицензий в будущем, выполним комплекс превентивных настроек:
conf отредактируем файл nethasp.ini. Отключим широковещательный опрос NH_USE_BROADCAST = Disabled и явно укажем прямой IP-адрес сервера с ключом в параметре NH_SERVER_ADDR = 192.168.x.x. Это исключит потерю сетевых пакетов подтверждения лицензии.