Сколько лицензий 1С занято и сколько свободно: проверка на сервере

· 9 мин

Содержание

Быстрее всего посмотреть количество занятых лицензий 1С на сервере командой rac session list --licenses или в консоли администрирования: узел рабочего процесса → «Лицензии». Там видно, какой сеанс какую лицензию держит, кто её выдал (сервер или клиентский компьютер) и на сколько мест рассчитан ключ. Общее число купленных мест показывает утилита ring license list и файлы *.lic.

Частое заблуждение — считать лицензии по числу строк в списке сеансов. Фоновые задания, сеансы консоли и спящие сеансы клиентскую лицензию не занимают. Поэтому «сеансов 40, лицензий 25» — нормальная картина, а не ошибка учёта.

Что именно считаем: купленные, выданные и занятые места

Перед проверкой разделите три числа. Их постоянно путают, и отсюда половина споров с поставщиком.

  • 📦 Куплено — сколько мест в активированных комплектах: программные лицензии (файлы *.lic) плюс аппаратные ключи HASP.
  • 🖥️ Выдано сервером — сколько клиентских лицензий сейчас раздаёт сервер 1С из своих файлов или ключей.
  • 👥 Занято всего — выданные сервером плюс полученные самими клиентами локально (ключ в USB компьютера пользователя, программная лицензия на терминальном сервере).

Где лежат программные лицензии:

ОСКаталогЧто там
WindowsC:\ProgramData\1C\licenses\файлы *.lic, по одному на активированный комплект
Linux/var/1C/licenses/те же файлы *.lic

Число файлов *.lic не равно числу мест. Один файл может быть и однопользовательской лицензией, и комплектом на 50 рабочих мест. Состав файла показывает ring (см. ниже).

Чтобы сервер вообще раздавал клиентские лицензии, в свойствах информационной базы в консоли должна быть включена выдача лицензий сервером 1С:Предприятия. Если флаг выключен, каждый клиент ищет лицензию у себя, и на сервере вы увидите только часть картины.

Консоль кластера: где увидеть лицензии по сеансам

Консоль администрирования серверов 1С подключается к агенту сервера (порт 1540 по умолчанию). Открыть лицензии можно двумя путями.

Через рабочие процессы

  1. Разверните Центральные серверы 1С:Предприятия → <сервер> → Кластеры → <кластер> → Рабочие процессы.
  2. Раскройте нужный процесс rphost.
  3. Откройте узел «Лицензии».

В списке — лицензии, которые получил этот процесс. Колонки показывают пользователя, компьютер, тип лицензии (программная или HASP), максимальное число пользователей по ключу и файл или серию ключа. Процессов в кластере может быть несколько — обойдите каждый.

Через информационную базу

Узел Информационные базы → <база> → Сеансы показывает всех подключённых. Колонка с приложением подскажет, кто реально занимает место: «Тонкий клиент», «Толстый клиент», «Веб-клиент». «Фоновое задание» и «Консоль кластера» в подсчёт не берите.

Консоль показывает текущий момент. Пик утром в 9:05 вы так не поймаете — для этого нужен журнал или мониторинг из разделов ниже.

Если консоль не открывается, проверьте, что служба агента сервера запущена, а на компьютере администратора зарегистрирована компонента radmin.dll той же версии платформы, что и сервер. Регистрацию делают из командной строки администратора: regsvr32 "C:\Program Files\1cv8\<версия>\bin\radmin.dll".

Командная строка: rac и ring

Консоль удобна, но для подсчёта и скриптов лучше командная строка. Утилите rac нужен запущенный сервер администрирования ras (порт 1545 по умолчанию).

Запуск ras вручную (в отдельном окне, оно должно оставаться открытым):

cd "C:\Program Files\1cv8\<версия>\bin"
ras cluster --port=1545

Дальше узнайте идентификатор кластера и запросите лицензии сеансов:

rac cluster list
rac session list --cluster=<uuid-кластера> --licenses

Если на кластере заведён администратор, добавьте --cluster-user=<имя> --cluster-pwd=<пароль>.

На каждую лицензию команда выводит блок полей. Самые полезные:

ПолеЧто значит
user-name, hostкто и с какого компьютера
app-idтип клиента: 1CV8C — тонкий, 1CV8 — толстый, WebClient — веб
license-typesoft — программная, HASP — аппаратный ключ
issued-by-serveryes — выдал сервер, no — клиент получил лицензию сам
max-users-allна сколько мест рассчитан ключ или файл
full-presentationчитаемое описание лицензии

Аналогичная выборка по процессам — rac process list --cluster=<uuid> --licenses. Полный список параметров смотрите в rac help session.

Сколько мест куплено: ring

Активированные программные лицензии показывает утилита лицензирования ring (ставится вместе с платформой, модуль license):

ring license list
ring license info --name <имя-лицензии-из-списка>

list выводит все лицензии на этом компьютере, info — подробности по одной: продукт, количество рабочих мест, регистрационные данные. Сложите места по всем клиентским лицензиям — это и есть потолок одновременной работы через сервер.

Для аппаратных сетевых ключей HASP число мест и текущих подключений видно в утилите Aladdin Monitor: она опрашивает менеджер лицензий HASP License Manager и показывает ключи в сети и занятые слоты.

Диспетчер задач и процессы rmngr, rphost, ragent

Диспетчер задач Windows лицензии не считает. Но он отвечает на соседний вопрос: живы ли процессы, которые эти лицензии раздают.

ПроцессРоль
ragent.exeагент сервера, принимает подключения клиентов и консоли
rmngr.exeменеджер кластера, ведёт реестр сеансов и сервисов, в том числе сервис лицензирования
rphost.exeрабочие процессы, через них клиенты работают с базой

Что полезно посмотреть на вкладке «Подробности»:

  • 🔍 есть ли rmngr.exe и не упирается ли он в 100% одного ядра — при зависшем менеджере кластера новые лицензии не выдаются;
  • 📈 сколько памяти съели rphost.exe — раздутый процесс часто держит «мёртвые» соединения;
  • 👤 на терминальном сервере — сколько запущено 1cv8c.exe и 1cv8.exe. Каждый такой процесс в терминальной сессии занимает отдельную клиентскую лицензию.

Последний пункт — самый практичный. Если на терминальном сервере 30 пользователей открыли по две базы, это до 60 процессов клиента, и считать нужно именно их.

Не завершайте rmngr.exe или ragent.exe из диспетчера задач в рабочее время. Оборвутся все сеансы кластера, пользователи потеряют несохранённые документы. Перезапуск службы сервера — только вечером или после предупреждения людей.

Технологический журнал: событие LIC

Когда нужно понять, кто и когда занимал лицензии за день или почему утром их «не хватило», включите технологический журнал с событием LIC. Оно фиксирует операции с лицензиями: получение, освобождение, ошибки поиска.

Файл настройки logcfg.xml кладут в каталог conf платформы (например, C:\Program Files\1cv8\conf\). Пример:

<?xml version="1.0" encoding="UTF-8"?>
<config xmlns="http://v8.1c.ru/v8/tech-log">
  <log location="D:\1C_TechLog\lic" history="48">
    <event>
      <eq property="name" value="LIC"/>
    </event>
    <event>
      <eq property="name" value="SESN"/>
    </event>
    <property name="all"/>
  </log>
</config>
  • history="48" — хранить журнал 48 часов, старые файлы платформа удалит сама.
  • SESN добавлен, чтобы видеть начало и конец сеансов рядом с лицензиями.
  • Каталог журнала заранее создайте и дайте на него права пользователю, от имени которого работает служба сервера.

Журнал пишется в текстовые файлы *.log по часам. Ищите по ним строку LIC и имя пользователя — так видно, в какую минуту закончились свободные места и какие сеансы их держали.

Событие LIC пишет немного, но не оставляйте <property name="all"/> с широким набором событий надолго: журнал по всем событиям на загруженном сервере вырастает на гигабайты за часы.

Клиентские и серверные лицензии считают по-разному

Это два разных вида лицензий, и на вопрос «сколько лицензий на сервере» у каждого свой ответ.

Клиентская лицензияЛицензия на сервер
Что разрешаетодновременную работу пользователейработу самого сервера 1С в клиент-серверном режиме
Как считаетсяпо числу одновременных подключений: 1, 5, 10, 20, 50 мест и т. д.одна на рабочий сервер кластера
Где искать занятостьrac session list --licenses, узел «Лицензии»файл *.lic или ключ на самом сервере, ring license list
Что будет при нехваткеновый пользователь не войдётсервер не запустит работу с базами

Серверные лицензии бывают обычные и КОРП; КОРП нужна для ряда возможностей масштабирования кластера. Количество пользователей серверная лицензия не задаёт — его ограничивают только клиентские.

При нехватке клиентских мест пользователь видит сообщение вроде Не обнаружено свободной лицензии!. Прежде чем докупать комплект, проверьте два случая:

  1. Флаг выдачи лицензий сервером выключен у части баз — клиенты ищут лицензию у себя и не находят.
  2. Лицензии формально заняты сеансами, в которых давно никто не работает . Об этом следующий раздел.

Зависшие сеансы, которые держат лицензии

Типичная утечка: человек закрыл ноутбук, ушёл домой, а сеанс и лицензия на сервере остались. Утром места нет у того, кто пришёл первым.

Как найти такие сеансы:

  • 🕒 в консоли откройте сеансы базы и отсортируйте по колонке последней активности — сеанс, где не было действий с вечера, кандидат на удаление;
  • 🔁 ищите одного пользователя с нескольких компьютеров или несколько одинаковых сеансов с одного host;
  • 🧩 сверьте сеансы в rac session list --licenses с реальными людьми: уволенные, отпускники, общие учётки.

Завершить конкретный сеанс:

rac session list --cluster=<uuid>
rac session terminate --cluster=<uuid> --session=<uuid-сеанса>

То же в консоли: выделить сеанс → контекстное меню → «Удалить».

Перед удалением сеанса убедитесь, что пользователь не работает: несохранённые данные пропадут, а незавершённое проведение документа откатится.

Чтобы утечка не повторялась

В конфигураторе откройте Администрирование → Параметры информационной базы и задайте:

  • Время засыпания пассивного сеанса — через сколько секунд без связи с клиентом сеанс засыпает. Спящий сеанс лицензию освобождает.
  • Время завершения спящего сеанса — через сколько спящий сеанс завершается полностью.

Ориентир для офиса — засыпание через 300–600 секунд и завершение через несколько часов. Слишком короткое засыпание ударит по тем, у кого нестабильный интернет: сеансы будут засыпать посреди работы.

Диагностика: выберите симптом

Мониторинг: оповещение до того, как места кончатся

Ручная проверка помогает разобраться один раз. Чтобы не узнавать о нехватке от бухгалтерии в день сдачи отчётности, поставьте простой счётчик по расписанию.

Скрипт PowerShell считает занятые лицензии и пишет предупреждение, когда свободных мест меньше порога:

$rac   = "C:\Program Files\1cv8\<версия>\bin\rac.exe"
$total = 50   # сумма мест по всем клиентским лицензиям (из ring license info)
$warn  = 5    # предупреждать, когда свободно меньше

$cluster = ((& $rac cluster list | Select-String '^cluster\s*:' |
            Select-Object -First 1).ToString() -split ':', 2)[1].Trim()

$used = (& $rac session list --cluster=$cluster --licenses |
         Select-String '^session\s*:').Count

$free = $total - $used
$line = "{0:yyyy-MM-dd HH:mm} занято {1} из {2}, свободно {3}" -f (Get-Date), $used, $total, $free
Add-Content -Path "D:\1C_Monitor\licenses.log" -Value $line

if ($free -lt $warn) {
    Write-EventLog -LogName Application -Source "1C-Licenses" -EntryType Warning -EventId 1001 -Message $line
}

Как запустить:

  1. Один раз зарегистрируйте источник событий: New-EventLog -LogName Application -Source "1C-Licenses" (PowerShell от администратора).
  2. В планировщике заданий Windows создайте задачу: запуск powershell.exe -File D:\1C_Monitor\lic.ps1 каждые 5 минут.
  3. Убедитесь, что служба ras работает постоянно — без неё rac вернёт ошибку подключения.

Файл licenses.log за неделю покажет реальный пик. Если места кончаются только 10 минут в день, проблема в зависших сеансах, а не в нехватке лицензий.

Вместо записи в журнал Windows предупреждение можно отправлять в мессенджер или почту, а счётчик $used отдавать в Zabbix как пользовательский параметр. Логика та же: занято, всего, порог.

На Linux то же самое делается однострочником в cron:

rac session list --cluster=<uuid> --licenses | grep -c '^session'

Держите $total в актуальном состоянии. Докупили комплект на 10 мест и забыли поправить скрипт — оповещения станут ложными.

Частые вопросы

Занимает ли лицензию Конфигуратор?
Да, сеанс конфигуратора работает от имени пользователя и тоже получает клиентскую лицензию, как и обычный клиент.
Занимают ли лицензию фоновые и регламентные задания?
Нет. Фоновые задания выполняются на сервере и клиентских лицензий не требуют, поэтому их сеансы при подсчёте пропускайте.
Можно ли посмотреть лицензии без прав администратора кластера?
Если у кластера заведены администраторы, консоль и rac потребуют их логин и пароль. Без них список сеансов и лицензий не откроется.
Почему в консоли видно больше лицензий, чем куплено?
Сервер показывает и лицензии, которые клиенты получили сами: с локальных ключей HASP или программных лицензий на своих компьютерах. Отфильтруйте по признаку выдачи сервером.
Где посмотреть, какую лицензию получил конкретный пользователь?
У пользователя — в окне «О программе» в клиенте 1С, у администратора — в строке этого пользователя в rac session list --licenses.