Многие администраторы при настройке работы 1С через терминальный сервер (RDP или RemoteApp) сталкиваются с ситуацией: приобретена многопользовательская программная лицензия, например, на 10 рабочих мест, но пользователи жалуются, что "не найдена лицензия", хотя реально работает меньше 10 человек. Рассмотрим подробно, куда "утекают" лицензии, выясним причины появления невидимых зависших сеансов и разберем по шагам, как правильно мониторить программные лицензии 1С.
Проанализируем частую ошибку администраторов, описанную в обсуждении. Многие по привычке устанавливают службу HASP License Manager (HASP LM), предполагая, что она будет "раздавать" программные лицензии по сети или терминальным сессиям. Выясним причину: HASP LM предназначен исключительно для работы с аппаратными USB-ключами защиты (HASP). Для программных лицензий, установленных непосредственно на терминальном сервере, никакие дополнительные раздатчики или менеджеры от Aladdin не нужны. Если пользователи заходят на терминальный сервер (Windows Server) как на свой рабочий стол, 1С берет программную лицензию напрямую из локального файла лицензии (файлы с расширением .lic). Удалите HASP LM, чтобы он не путал вас и не создавал лишних конфликтов.
Разберем интересную техническую особенность Windows Server. Если у вас установлена 32-битная версия платформы 1С на 64-битной операционной системе терминального сервера, пользователи часто печатают документы на перенаправленные локальные принтеры. При печати из 32-битного приложения запускается системный процесс splwow64.exe. Этот процесс отвечает за преобразование вызовов между 32- и 64-разрядными средами.
Проблема заключается в том, что splwow64.exe автоматически не закрывается при закрытии 1С. Он остается висеть в памяти определенное время. В режиме RemoteApp это означает, что терминальная сессия пользователя не завершается (ведь в ней еще запущен процесс), и, как следствие, программная лицензия 1С остается занятой! Для решения этой проблемы необходимо добавить процесс в реестр Windows в список завершаемых при закрытии терминальной сессии, либо уменьшить тайм-аут его жизни.
Посмотрим, как можно посчитать занятые лицензии, если у вас файловая база данных без сервера 1С. В этом случае подсчет придется вести вручную через инструменты операционной системы.
Вам необходимо считать процессы 1cv8.exe или 1cv8c.exe (тонкий клиент). Не обращайте внимания на процесс 1cv8s.exe — это просто программа запуска (стартер), она не потребляет программную лицензию. По ИД сеанса вы сможете определить, в сессии какого пользователя запущен лишний экземпляр, и при необходимости принудительно завершить зависший процесс.
Рассмотрим более продвинутый инструмент, поставляемый вместе с платформой 1С — утилиту ring. Для ее работы требуется установленная среда Java. Если вы корректно настроите пути к Java (переменная JAVA_HOME), вы получите мощный инструмент для анализа лицензий прямо из командной строки.
Разберем основные команды утилиты ring:
// Выводит список всех программных лицензий на сервере
ring license list
// Показывает детальную информацию о конкретном файле лицензии
ring license info --name <имя_файла_лицензии>
// Проверяет, не нарушена ли привязка лицензии к "железу" сервера
ring license validate --name <имя_файла_лицензии>
Это помогает быстро произвести инвентаризацию и убедиться, что лицензии активны и валидны для текущей конфигурации оборудования.
Посмотрим на развитие платформы. Начиная с версий 1С:Предприятие 8.3.22, фирма 1С активно внедряет собственные инструменты для управления лицензиями. Появилась встроенная обработка "Управление лицензиями", доступная администраторам. Она наглядно отображает:
Для программистов 1С появилось новое свойство глобального контекста, позволяющее получать эту информацию программно и строить собственные отчеты:
// Использование нового свойства для работы с лицензиями
Менеджер = МониторингЛицензий;
Если ваша база работает в клиент-серверном варианте (используется Сервер 1С:Предприятие), задача решается намного элегантнее. Запустите консоль "Администрирование серверов 1С", перейдите в кластер и откройте раздел сеансов. В настройках списка (меню "Вид") добавьте столбец Лицензия. Система в реальном времени покажет, кто именно работает в базе, какая конкретно лицензия (программная или аппаратная, клиентская или выданная сервером) была захвачена каждым сеансом.
Если у вас скопилось множество файлов .lic от прошлых активаций, и вы не знаете, какие из них актуальны, используйте официальный портал поддержки 1С. В личном кабинете в разделе лицензий можно проверить состояние любого ПИН-кода. Там вы увидите, исчерпан ли лимит резервных активаций и какое предприятие зарегистрировало данный комплект.
Подведем итог: чтобы избежать проблем с нехваткой лицензий, вовремя отключайте зависшие RDP-сессии (настройте лимиты времени в групповых политиках Windows), разберитесь с процессом splwow64.exe и используйте штатные средства мониторинга, начиная от Диспетчера задач и заканчивая утилитой ring.