В практике администрирования 1С:Предприятия часто возникает критическая ситуация: сервер работает, программные лицензии активированы, но пользователи при попытке входа получают ошибку «Лицензия не найдена». Даже перезагрузка всего физического сервера или виртуальной машины не всегда решает проблему. Рассмотрим подробнее, почему так происходит, и разберем по шагам, как восстановить работоспособность системы и предотвратить повторение подобных инцидентов.
Типичная картина проблемы выглядит так: до определенного момента всё работало исправно, но после кратковременного сбоя сети или аварийного завершения работы нескольких ПК пользователи перестают «видеть» ключи. При этом в журнале поиска лицензий мы можем наблюдать следующий текст:
Поиск лицензии на клиенте:
Файл программной лицензии не найден
локальный ключ недоступен: Status=0, ORGL8 Локальный, не установлен
nethasp.ini: C:/Program Files/1cv8/conf/nethasp.ini, прочитан успешно,
ошибка соединения с менеджером лицензий: Net Status=0, System Error=0, Warning=15
Проанализируем ситуацию: платформа поочередно опрашивает локальные ключи защиты, затем ищет файлы программных лицензий (.lic), а после пытается обратиться к менеджеру лицензий HASP. Если в вашей конфигурации используется электронная поставка и выдача лицензий сервером, отсутствие этих данных в логе на стороне клиента — это норма, однако критично то, что сервер 1С не отдает свободную лицензию из своего пула.
Многие администраторы полагают, что команда Restart-Service или полная перезагрузка ОС должна обнулить все состояния. Однако в современных версиях 1С (начиная с 8.3.15 и выше) реализован механизм обеспечения отказоустойчивости и сохранения состояния сеансов. Информация о подключениях к базам данных сохраняется в специальных файлах в каталоге описания кластера (обычно это папка snccntx внутри srvinfo).
Когда происходит аварийный разрыв связи, сеансы пользователей могут «подвиснуть». Они отображаются в консоли администрирования как активные, хотя фактически клиентское приложение уже закрыто. Поскольку электронные лицензии имеют строгий лимит на количество одновременных подключений, эти «фантомные» сеансы продолжают удерживать лицензии за собой. При перезагрузке службы агент сервера считывает данные из папки сеансов и восстанавливает их, снова блокируя лицензии. В итоге — лицензий нет, хотя пользователей в системе физически мало.
Рассмотрим алгоритм действий, который гарантированно освободит лицензии и позволит пользователям зайти в базу:
services.msc или командную строку (net stop "1C:Enterprise 8.3 Server Agent").reg_1541 и временно переместить содержимое папки snccntx. Это заставит сервер «забыть» о старых соединениях.rmngr (Cluster Manager) пересчитает доступные лицензии заново, исходя из реально активных подключений.Чтобы не заниматься ручной очисткой, настроим параметры кластера для автоматического управления жизненным циклом сеансов. Рассмотрим основные параметры, которые нам помогут:
Также важно проверить настройки Keep Alive на уровне операционной системы. Если настройки ОС слишком консервативны, сервер может часами ждать ответа от несуществующего клиента. Рекомендуется установить KeepAliveTime в реестре Windows на значение около 15–30 минут.
Выясним, как именно настроена ваша база. В консоли администрирования в свойствах информационной базы есть флаг «Разрешить выдачу лицензий сервером 1С».
Если этот флаг включен, то лицензию выдает процесс rmngr. В этом случае один пользователь, открывший три разные базы на одном сервере, может занять три разные лицензии (если не настроена группировка). Именно в этом режиме «зависшие» сеансы наиболее опасны, так как они напрямую уменьшают доступный остаток в пуле сервера.
Если флаг выключен, клиент ищет лицензию самостоятельно (локально или через менеджер лицензий). В этом случае логи поиска в сообщении 11 как раз показывают неудачную попытку клиента найти ключ в своей локальной сети.
Мы выяснили, что перезагрузка сервера — это не панацея, если механизмы восстановления состояния 1С сохраняют данные о битых сеансах. Совместная работа системного администратора по настройке параметров Keep Alive и правильная конфигурация свойств информационной базы позволяют свести подобные сбои к минимуму.
В случае повторения проблемы всегда начинайте диагностику с консоли администрирования 1С, проверяя количество сеансов относительно общего количества купленных лицензий. Если количество сеансов в консоли превышает число лицензий — очистка сеансов и последующий перезапуск службы 1C:Enterprise 8.3 Server Agent станет самым быстрым способом вернуть пользователей к работе.