При работе в многопользовательском режиме системные администраторы и пользователи нередко сталкиваются с ситуацией, когда при запуске информационной базы система сообщает о нехватке лицензий, хотя количество фактически работающих пользователей не превышает купленное количество рабочих мест. Дополнительно при попытке администратора проверить или переместить файлы программных лицензий .lic операционная система может выдавать ошибку о том, что файл занят другим приложением.
Проанализируем детально, как устроена система программного лицензирования платформы 1С:Предприятие 8.3, почему лицензии удерживаются процессами и как правильно настроить кластер серверов и терминальный доступ для исключения подобных сбоев.
Для понимания причин нехватки лицензий разберем, как платформа определяет и захватывает программную лицензию. Существует два принципиально разных сценария работы:
Расположение файлов .lic зависит от того, под какой учетной записью выполнялась активация и как запущена служба сервера 1С:
C:\ProgramData\1C\licenses (рекомендуемое расположение для общедоступных клиентских лицензий).%windir%\System32\config\systemprofile\AppData\Local\1C\licenses.%userprofile%\AppData\Local\1C\licenses.Если лицензия активирована в каталог службы или профиль администратора, клиентское приложение 1cv8.exe не сможет найти ее напрямую и будет требовать лицензию у сервера 1С. Кроме того, если файлы лицензий сервера и клиентов разнесены по разным каталогам с некорректными правами доступа, платформа может блокировать запуск.
Ошибка «Файл занят другим приложением» возникает потому, что процесс сервера 1С (rphost.exe или ragent.exe) либо клиентский процесс держит дескриптор файла открытым для контроля целостности привязки. Также удерживать файл могут антивирусные программы или службы резервного копирования при постоянном сканировании.
Разберем комплекс мер, которые помогут освободить лицензии и настроить их стабильное использование.
Одной из главных причин исчезновения свободных лицензий в клиент-серверном режиме являются «зависшие» или «спящие» сеансы. По умолчанию сервер 1С может удерживать неактивный сеанс до 24 часов (86400 секунд), продолжая резервировать за ним лицензию.
Для изменения этих параметров выполним следующие действия в Консоли администрирования кластера серверов 1С:
1200 секунд — 20 минут). По истечении этого времени неактивный сеанс уснет.86400) и уменьшим его до 1800–3600 секунд (от 30 минут до 1 часа). После этого сервер будет принудительно удалять зависшие сеансы и мгновенно возвращать лицензии в пул.Если пользователи работают на одном сервере через Удаленный рабочий стол (RDP), целесообразно запретить серверу 1С самостоятельно раздавать лицензии, чтобы одна сессия пользователя не потребляла несколько лицензий при открытии нескольких баз:
*.lic скопированы в общий каталог C:\ProgramData\1C\licenses, к которому имеют права на чтение все пользователи терминала.Если лицензия продолжает удерживаться даже после закрытия программы, выясним причину блокировки:
.lic или имя файла лицензии. Монитор покажет точный PID и имя процесса (например, rphost.exe или сторонний антивирус), который держит файл.%localappdata%\1C\1Cv8 и %appdata%\1C\1Cv8, чтобы удалить запомненные некорректные параметры привязки к лицензиям.1C\licenses и исполняемые файлы ragent.exe, rmngr.exe, rphost.exe, 1cv8.exe в исключения антивирусного сканера.Если в системе ранее использовались аппаратные ключи USB или настроена комбинированная схема (HASP + программные лицензии), платформа при старте может тратить время на опрос локальных и сетевых портов. При отсутствии USB-ключей рекомендуется отключить поиск аппаратного ключа в параметрах запуска конкретной базы (кнопка Настройка в списке баз -> снять флаг Использовать аппаратную защиту), что предотвратит конфликты поиска лицензий.