В процессе эксплуатации крупных информационных систем на базе 1С:Предприятие 8.3 администраторы нередко сталкиваются с ситуацией, когда сервер внезапно перестает принимать клиентские соединения, выдавая ошибки об отсутствии свободных лицензий или ограничении функционала. Особенно остро эта проблема проявляется в смешанных средах, где одновременно присутствуют лицензии уровней ПРОФ и КОРП. Рассмотрим подробно, почему возникают такие сбои и как их диагностировать и устранять.
Проанализируем типичный лог ошибки, который получает пользователь при попытке входа. В нем часто фигурируют сообщения о поиске в файлах nethasp.ini, программных лицензиях .lic и обращении к сервису лицензирования. Выясним причину: почему система видит КОРП-лицензии в консоли, но ведет себя так, будто установлены ограничения ПРОФ?
Основная сложность заключается в том, что платформа 1С строго разграничивает возможности уровней лицензирования. Если в кластере активирована хотя бы одна функция уровня КОРП (например, управление потреблением ресурсов или использование более 500 одновременных сеансов), система требует, чтобы абсолютно все активные лицензии — и серверные, и клиентские — имели уровень КОРП. Если сервер случайно «подцепит» лицензию ПРОФ, он может принудительно ограничить функционал всего кластера.
Обратим внимание на специфическую ошибку в логе: Не найдено ни одного сервера с размещенным сервисом serviceName=LicenseService. Начиная с версии платформы 8.3.14, управление программными лицензиями может быть выделено в отдельный сервис кластера. Рассмотрим по шагам, что это означает и как это проверить:
0a3db51c-6b29-4c6c-9e4b-8174fc77afd6 отвечает за LicenseService. Если рабочий процесс rmngr, на котором назначен этот сервис, завершился аварийно или завис, остальные рабочие серверы кластера «потеряют» доступ к лицензиям.1C:Enterprise 8.3 Server Agent.Выясним, почему система ограничивает количество пользователей числом 500, несмотря на наличие 2000 КОРП-лицензий. С 2019 года компания «1С» ввела жесткий программный контроль. Если система обнаруживает в папке C:/ProgramData/1C/licenses старые файлы лицензий уровня ПРОФ, она может считать их приоритетными или войти в режим конфликта. При настройке новых инстансов, например, для целей разработки, рекомендуется использовать рецепты по установке комьюнити-лицензии на сервер, чтобы избежать влияния лишних файлов на промышленный контур.
Проанализируем ситуацию: в логе автора упоминаются два файла лицензий, например, 2023011222443.lic и 20240229150211.lic. Один из них может быть серверной лицензией КОРП, а другой — клиентской лицензией ПРОФ на 500 мест, оставшейся после апгрейда. Для решения проблемы выполним следующие действия:
.lic в папке лицензий. Нам необходимо убедиться, что среди них нет «забытых» лицензий уровня ПРОФ.КОРП в наименовании продукта.Текст ошибки прямо указывает: «В кластере определены счетчики потребления ресурсов... Использование этих функций возможно только для лицензий КОРП». Разберем, какие именно настройки в консоли администрирования могут блокировать запуск системы:
Если сервер 1С считает, что у него нет действующей КОРП-лицензии, он запрещает использование следующих функций:
Безопасный расход памяти за один вызов или Максимальный объем памяти рабочих процессов.Если вы столкнулись с принудительным ограничением ресурсов, а лицензии еще не восстановлены, можно применить автоматический перезапуск рабочих процессов (rphost) для поддержания стабильности системы по заданным лимитам. Рассмотрим алгоритм временного обхода блокировки, если нужно срочно запустить пользователей в базу:
Важно: Это лишь временная мера. Если лицензии действительно КОРП, необходимо восстановить корректную работу LicenseService, чтобы эти функции стали доступны легально.
В представленном логе видно, что система пытается опрашивать ключи HASP (маркировки ORG8B, ORG8A). Если в сети присутствует аппаратный ключ ПРОФ, 1С может попытаться захватить его первым. Чтобы этого избежать, мы можем принудительно задать приоритет программных лицензий.
Для этого проанализируем файл conf.cfg, расположенный в каталоге conf установленной платформы. Мы можем добавить туда параметр, управляющий приоритетом. Посмотрим на пример настройки:
# Пример файла conf.cfg с установленным приоритетом
V8_AUTO_LICENSE_PRIORITY=Software
Эта настройка заставляет систему сначала искать программные файлы .lic (КОРП), и только если они не найдены, обращаться к менеджеру лицензий NetHASP.
Проанализируем текущее состояние сеансов. В консоли администрирования серверов 1С перейдем в список «Сеансы». Добавим колонку «Лицензия». Здесь мы увидим, какую именно лицензию (файл или ключ) получил каждый конкретный пользователь. Для оперативного контроля за подключениями и принудительного сброса зависших процессов удобно использовать WEB приложение для управления сеансами, которое позволяет управлять кластером через адаптивный веб-интерфейс.
Если мы видим, что часть пользователей получает лицензию Локальный КОРП, а часть — Сетевой ПРОФ, это явный признак того, что в сети работает лишний менеджер лицензий с ключом ПРОФ, который «портит» общую картину кластера.
.lic файлы, не относящиеся к текущему набору КОРП-лицензий.NH_TCPIP = DISABLED в настройках драйвера или конфиге 1С.LEvent), чтобы увидеть детальный процесс поиска лицензии. Для обработки логов и поиска причин «тормозов» можно использовать конвертер технологического журнала в JSON, а затем провести замер производительности контура 1С для поиска узких мест.Таким образом, совместная работа администратора по очистке старых лицензий и настройке сервисов кластера позволяет полностью устранить ошибки уровня КОРП и обеспечить стабильную работу системы для любого количества пользователей.