При работе в клиент-серверном варианте 1С:Предприятия 8.3 системные администраторы часто сталкиваются с неочевидным поведением системы лицензирования. Одной из наиболее запутанных является «плавающая» ошибка: «Ошибка программного лицензирования. Слишком много приложений используют файл программной лицензии». Проблема может проявляться нерегулярно: например, в одну информационную базу пользователь заходит без проблем, а при попытке авторизоваться в другой базе той же конфигурации или на том же сервере система выдает сообщение об отсутствии лицензии.
В этой статье мы подробно разберем природу возникновения данной ошибки, проанализируем структуру технологического лога поиска ключей и выработаем пошаговый алгоритм устранения неисправности, а также рассмотрим особенности лицензирования в кластере серверов 1С.
Для начала проанализируем типичный лог ошибки, который выдает платформа 1С при неудачной попытке получить лицензию. Данный лог содержит исчерпывающую информацию о последовательности поиска программных и аппаратных ключей:
Поиск лицензии на клиенте:
Файл программной лицензии не найден
Поиск лицензии на сервере:
Файл программной лицензии не найден
локальный ключ недоступен: Status=0, ORGL8 Локальный, не установлен...
nethasp.ini: отсутствует, использованы настройки по умолчанию...
Поиск лицензии в сервисе лицензирования:
Ошибка программного лицензирования. Файл программной лицензии не предусматривает возможность запуска клиентских приложений 1С:Предприятия или внешних соединений: file://C:/ProgramData/1C/licenses/20191117213438.lic
Ошибка программного лицензирования. Продукт с регистрационным номером комплекта 8101553207G0 допускает одновременное использование не более 1 пинкодов
Ошибка программного лицензирования. Слишком много приложений используют файл программной лицензии: file://C:/ProgramData/1C/licenses/20200317144337.lic
Давайте подробно разберем, о чем говорят эти строки:
20191117213438.lic указывает на то, что в общей директории лицензий лежит файл серверной лицензии (например, на 64-разрядный сервер 1С:Предприятия). Платформа пытается применить его для запуска клиентского сеанса, что логично завершается отказом, так как серверная лицензия предназначена исключительно для запуска самого процесса rphost.8101553207G0, указывает на конкретный комплект программного продукта. Ошибка сообщает, что в одной рабочей папке находятся два или более файла лицензий, которые были получены по разным пинкодам, но из одного и того же комплекта поставки. По правилам лицензирования 1С, на одном компьютере (или в рамках одной сетевой службы) запрещено одновременно использовать несколько пинкодов из одного комплекта для суммирования лицензий.Рассмотрим подробнее, почему система внезапно начинает выдавать подобные сообщения, если до этого конфигурация работала стабильно месяцами. Основными причинами являются:
.lic из каталогов. Платформа сканирует все файлы с расширением .lic в доступных ей папках по алфавиту или по дате изменения. Если старый файл остался в каталоге, возникает конфликт версий.rphost лицензии могут распределяться динамически. Различные процессы могут обращаться к файлам лицензий под разными учетными записями, имеющими разный доступ к сетевым путям или кэшированным данным. Это объясняет «плавающий» характер ошибки.Для исправления ситуации выполним совместную диагностику и очистку системы лицензирования по шагам.
Выясним, в каких именно каталогах платформа 1С ищет файлы программных лицензий. Поиск осуществляется в следующих директориях на сервере приложений:
C:\ProgramData\1C\licenses (основной общий каталог данных приложений).C:\Program Files\1cv8\conf (общий каталог настроек платформы).C:\Users\USR1CV8\AppData\Roaming\1C\1cv8\conf).C:\Program Files\1cv8\8.3.15.1830\conf).Нам необходимо зайти в каждый из этих каталогов на всех серверах кластера, включая выделенный сервер лицензирования.
В целевых папках (в первую очередь в C:\ProgramData\1C\licenses) найдем все файлы с расширением .lic. Откроем их с помощью обычного текстового редактора («Блокнот»).
Внутри каждого файла содержится XML-структура, в которой нас интересуют следующие теги:
<regNumber> — регистрационный номер комплекта.<count> — количество доступных подключений (номинал лицензии).<distrType> — тип привязки и дистрибьюции.Проанализируем содержимое. Если мы обнаружим два файла с одинаковым значением <regNumber>, но разными датами создания (или разными именами файлов, которые генерируются на основе даты и времени активации, например 20200317144337.lic), это и есть источник нашего конфликта.
Выполним очистку каталога лицензий:
.lic из рабочих каталогов 1С во временную папку бэкапа за пределами путей поиска платформы (например, в C:\BackupLicenses\). Внимание: не удаляйте файлы безвозвратно до полной проверки работоспособности системы!Даже после физического перемещения файлов служба сервера 1С может хранить сведения о них в оперативной памяти или временных файлах сеансов. Чтобы применить изменения, выполним следующие действия:
1C:Enterprise 8.3 Server Agent) через консоль управления службами services.msc.C:\ProgramData\1C\1cv8\ и удалим все временные файлы и папки кэша (папки с длинными именами-идентификаторами), кроме папки licenses, в которой лежат наши действующие ключи.Убедимся, что служба 1C:Enterprise 8.3 Server Agent запущена от имени пользователя (например, USR1CV8), который имеет полные права доступа (Full Control) к каталогу C:\ProgramData\1C\licenses. Недостаток прав на чтение или запись временных файлов блокировок в этой папке также может приводить к ошибке «Слишком много приложений используют файл...», так как процесс не может монопольно захватить файл для проверки хэш-суммы.
Чтобы избежать подобных проблем в будущем при администрировании крупных информационных систем на платформе 1С:Предприятие, рекомендуем придерживаться следующих правил:
.lic), регистрационный номер и использованный пинкод. Это позволит мгновенно определить актуальный файл при возникновении сбоев.Таким образом, плавающая ошибка лицензирования в подавляющем большинстве случаев решается простой ревизией рабочих каталогов на сервере приложений, удалением дубликатов файлов программных лицензий из одного комплекта поставки и перезапуском службы сервера для очистки кэша сеансов.