Особенности активации обновлятора на виртуальных системах

  оглавление  Клонируем обновлятор для выполнения операций в несколько потоков

Удаляем неиспользуемые сеансы при помощи Обновлятора-1с

Проблема

Ко мне обратился один из пользователей обновлятора со следующей проблемой:

Есть клиент, у которого вечно пропадают лицензии 1с, пользователи запускают несколько сеансов и работают, но лицензий не хватает. Точнее хватало бы, если бы использовалось по одной лицензии. В свое время я намучился с этим у себя на демо сервере, где пользователи запускают веб-сеансы и не закрывают их как положено, в результате куча новых сеансов и как следствие, нехватка лицензий.

И он предложил добавить в обновлятор следующую функциональность:

Периодически проверяем все сеансы на сервере и если какой-то из сеансов не использовался в течении N-минут, то завершаем его, освобождая таким образом лицензии.

Решение

1. Перейдите в обновляторе на закладку "Скрипты":

2. Здесь выберите тип скрипта "Пакетный" и базу, в которой требуется периодически завершать неиспользуемые сеансы на сервере 1с:

3. Далее нажмите пункт "обновлятор", далее "Методы", далее "Завершение неиспользуемых сеансов":

4. Откроется диалог со следующими параметрами:

Пробежимся по его настройкам.

а. Прежде всего мы задаём типы сеансов на сервере 1с, которые нужно обрабатывать. По умолчанию, отмечены только 1CV8 и 1CV8C - толстый и тонкий клиенты соответственно. Если вы хотите, чтобы обрабатывались и другие типы сеансов, отметьте их галками.

б. Выбор между "в базе" и "в кластере". Нужно понимать, что скрипт всегда запускается для какой-то конкретной базы, которую мы выбрали в настройках. Если таких баз 10 скрипт запускается 10 раз для каждой из этих баз. Если выбран пункт "в базе", то обрабатываются только сеансы базы, для которой сейчас выполняется скрипт. Если же выбран пункт "в кластере", то обрабатываются все сеансы кластера, в который входит база.

в. Пункт "неактивные более Х минут". Сеансы, которые неактивны более X минут будут завершаться принудительно.  Внимание. Для реализации этой опции обновлятор ориентируется на последнюю активность сеанса, которую нам возвращает сервер. Это значение можно увидеть в оснастке кластера в колонке сеанса "Последняя активность". К сожалению, в большинстве случаев (видимо фоновое поведение клиента) эта колонка обновляется кластером даже если пользователь не работает напрямую в базе. Я не нашёл других способов узнавать именно пользовательскую активность в сеансе. 

г. Пункт "спящие". Если поставить эту галку, то сеансы, у которых установлен признак Hybernate (спящий), будут завершаться принудительно.

д. Пункт "дубли". Если поставить эту галку, то сеансы запущенные в одной и той же базе, с одного и того же компьютера, под одним и тем же пользователем будут считаться дублями. Из всех дублей будет оставляться только самый старый сеанс (запущенный первым из всех), а все остальные будут завершаться принудительно.

В нашем случае мы хотим, чтобы завершались все сеансы кластера, в который входит база, если:

  • сеанс является толстым или тонким клиентом
  • сеанс неактивен более 10 минут
  • сеанс заснул

Настройки диалога будут такими:

Нажимаем OK и в текст скрипта вставляется следующая команда:

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

Снимаем (если они стоят) все галки, они нам в этом скрипте ни к чему:

Теперь можете смело экспериментировать, чтобы убедиться что скрипт делает то, что вам нужно. Для этого создавайте необходимые условия для завершения сеансов и нажимайте кнопку "Запустить".

Предположим, что всё в полном порядке.

Осталось сохранить этот скрипт в планировщик, чтобы он запускался по расписанию.

Нажимаем кнопку "Сохранить":

В открывшемся диалоге зададим путь и имя (сделайте его осмысленным) скрипта. Из галок обязательно поставим "Закрывать обновлятор после работы скрипта" и "Настроить однократный запуск скрипта через планировщик Windows":

Нажмём "ОК" и укажем авторизацию пользователя, под которым нужно выполнять скрипт:

Снова нажмём ОК. Готово, скрипт добавился в планировщик заданий.

Теперь перейдём в планировщик заданий Windows и уже в нём настроим нужную нам периодичность запуска:

Откроем задание на редактирование и на закладке "Триггеры" укажем, что хотим выполнять задачу ежедневно каждые 15 минут:

На этом всё.

Замечание

Если планируется достаточно частое выполнение этого скрипта, я советую вынести эту задачу в отдельный (портативный установленный) экземпляр обновлятора.

Нужно понимать, что технически запуск скрипта равносилен запуску обновлятора для выполнения определенных задач. А такие запуски в рамках одного экземпляра программы выстраиваются в очередь. И если у вас ночью запустилось пакетное обновление баз на 8 часов, то пока все эти обновления не отработают, никакие скрипты запущены не будут.

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

Также отдельно обращаю внимание на то, что вы можете сохранить несколько скриптов с разными параметрами контроля сеансов для разных баз/групп баз/кластеров.

С уважением, (преподаватель школы 1С программистов и разработчик обновлятора).



Владимир Милькин
Как помочь сайту: расскажите (кнопки поделиться ниже) о нём своим друзьям и коллегам. Сделайте это один раз и вы внесете существенный вклад в развитие сайта. На сайте нет рекламы, но чем больше людей им пользуются, тем больше сил у меня для его поддержки.

Нажмите одну из кнопок, чтобы поделиться:



Особенности активации обновлятора на виртуальных системах

  оглавление  Клонируем обновлятор для выполнения операций в несколько потоков