Завершение сеансов пользователей в 1С: Управление холдингом с БСП
В конфигурации Управление холдингом 3.0.6.8 с номером версии Библиотеки стандартных подсистем 3.0.1.428 принудительно завершить сеансы пользователей в режиме 1С:Предприятие можно через меню Администрирование – Обслуживание – Активные пользователи – Завершить сеанс (Рис. 1 — 3):
Рис. 1. Администрирование – Обслуживание
Рис. 2. Обслуживание – Активные пользователи
Рис. 3. Активные пользователи – Завершить сеанс
Активные сеансы в 1С. Внешнее управление
Перед тем, как перейти к основной теме, необходимо кратко рассмотреть некоторые понятия и общие методы работы с информационной системой 1С в части, касающейся проведения сеансов активными пользователями в типовых и отраслевых конфигурациях.
В некоторых случаях, среди специалистов по установке, настройке и использованию программных продуктов 1С встречаются разные интерпретации понятий «сеанс» и «соединение», что может привести к определенной путанице и случайным недоразумениям. Так вот, теоретически (официально) под «сеансом» понимается обращение пользователя к базе данных посредством программных инструментов и механизмов, которые, в свою очередь, имеют общее название «соединение». Проще говоря, если наглядно, то «сеанс» — всадник, а «соединение» — лошадь (средство транспортировки седока).
Управлять сеансами 1С (запрет запуска, начало сеанса, прерывание, возобновление) можно несколькими, радикальными и не очень, способами. Например, с помощью конфигуратора, непосредственно из конфигурации или с использованием консоли сервера. Однако наибольший интерес представляет сервис «Внешнее управление сеансами 1С», который обладает рядом преимуществ и достоинств.
Возможности механизма «Внешнее управление сеансами 1С»
- Обеспечение начала или возобновления сеансов согласно заданным условиям и с учетом требуемых параметров, таких как имя пользователя, день недели и промежуток времени, вид конфигурации, база данных, субъект доступа, кластер серверов.
- Ограничение допустимого количества одновременных обращений к информационной базе, например, предоставление доступа к базе данных первым семи пользователям.
- Своевременное уведомление клиентов о закрытии доступа к информационной базе с указанием причин отказа.
- Резервирование времени работы с базой данных для конкретных пользователей (бухгалтеры, руководители, менеджеры высшего звена и т.д.).
- Недопущение запуска нескольких сеансов одним пользователем с целью оптимального использования приобретенных лицензий 1С.
- Регистрация начала, приостановки, возобновления и завершения сеансов, ведение учета активных сеансов.
Особенности сервиса контроля сеансов
Первоначально данный программный продукт представлен в виде общедоступного сервиса, который обладает следующими свойствами и характеристиками:
- установка и настройка программного продукта не требуется, главный функционал сервиса доступен сразу же после окончания регистрации;
- разрешающие и запрещающие правила, а также объекты доступа, размещены в базе опубликованного сервиса;
- доработка и расширение функциональных возможностей допускается с привлечением службы технической поддержки.
На основании стандартной версии пользователь может создать собственный сервис, имеющий свою базу правил и список объектов доступа. При этом, вопросами оптимизации и расширения функционала приложения занимаются исключительно программисты 1С.
Зависшие сеансы в 1С 8.3.5
После перехода с платформы 8.2 на платформу 8.3 многие программисты и системные администраторы недоумевают, видя в консоли огромное количество зависших сеансов пользователей. Но не так страшен черт, как его малюют. Давайте попробуем разобраться.
Итак, картина выглядит примерно следующим образом:
Как мы видим, у сеансов отсутствует активное соединение и рабочий процесс. На каждого пользователя может быть запущено сразу несколько сеансов, но только один из них активный. Сеансы висят сутками и многих это пугает. Администраторы начинают принудительно их завершать. Но, на самом деле, страшного в этом ничего нет. Не многие двигают полосу прокрутки в списке сеансов вправо, где можно найти интересную колонку под названием «Спящий».
Так что же такое «спящий сеанс»?
Для повышения устойчивости работы клиентских приложений, в версии 8.3.5 реализовано удержание сеанса при оставлении программы без работы. Теперь, при длительной не активности или при засыпании клиентского компьютера, сеанс не завершается, а переходит в «спящий режим». При появлении активности, сеанс возобновляется.
Сеанс переходит в спящий режим в двух случаях:
- При нештатном разрыве соединения, назначенного сеансу (для толстого клиента, внешнего соединения, тонкого клиента при прямом соединении с сервером). При физическом отключении сети сервер обнаруживает разрыв соединения с клиентским приложением в течение 2-3 минуты.
- По истечении интервала времени, в течение которого клиентское приложение, использующее сеанс, не проявляется активности (для веб-клиента и тонкого клиента при подключении через веб-сервер). Если компьютер клиента не находится в режиме энергосбережения, и клиентское приложение бездействует (не выполняет никаких действий пользователя), то оно периодически вызывает сервер «1С:Предприятия» с интервалом 5-10 минут для поддержания активности сеанса. Поэтому не рекомендуется устанавливать время засыпания сеанса меньше 10 минут.
Любая активность приводит к пробуждению сеанса.
Спящий сеанс завершается в следующих случаях:
- По истечении интервала времени, который определяет время жизни спящего сеанса.
- Если блокировки, установленные спящим сеансом, конфликтуют с блокировками, которые пытаются установить активные сеансы.
Подробнее на сайте 1С:ИТС : Сеансы и соединения
Можно ли изменить настройки?
Настройки времени засыпания сеанса и времени завершения спящего сеанса доступны в настройках ИБ (в конфигураторе меню: Администрирование — параметры информационной базы) .
По умолчанию время засыпания пассивного сеанса равно 20 минут, время завершения спящего сеанса — 24 часа.
Отличие понятий сеанс и соединение в «1С:Предприятие 8»
В чем отличия между сеансом и соединением? Этот, на первый взгляд, простой вопрос на экзамене 1С:Эксперт многих ставит в тупик. Несмотря на немалый опыт программирования, сформулировать четкий и правильный ответ сможет далеко не каждый специалист.
В данной статье проведем детальный разбор этого вопроса. Для начала рассмотрим по отдельности понятия сеанс и соединение в 1С:Предприятие. Отметим, что информация актуальна для версий платформы 8.2.x и 8.3.x.
Сеанс 1С
Обратимся к руководству администратора. В нем понятие сеанса определено следующим образом:
Сеанс определяет активного пользователя информационной базы и поток управления этого пользователя.
Можно сказать, что кластер серверов не видит пользователей, вместо них он видит сеансы и сеансовые данные. В консоли управления кластером в принципе отсутствует раздел «Пользователи», под пользователями кластер понимает сеансы.
Это подтверждает визуальное представление пункта «Сеансы» – иконка отображается в виде пользователей.
Следует уточнить, что под активным пользователем не обязательно понимается клиентское соединение, это также может быть:
- экземпляр клиентского приложения «1С:Предприятие»
- экземпляр веб-приложения, где исполняется веб-клиент
- экземпляр внешнего соединения, полученный из объекта V83.COMConnector
- 1 экземпляр фонового задания
- 1 обращение к Web-сервису
Сеансовые данные
Рассмотрим понятие сеансовые данные. Сеанс содержит в себе некоторую информацию, такую как:
- наименование информационной базы
- номер сеанса
- имя аутентифицированного пользователя информационной базы
- язык интерфейса
- значения параметров сеанса
- временные хранилища
- статистику работы сеанса
- информацию форм управляемого приложения
- некоторые внутренние данные платформы
Такая информация называется сеансовыми данными. Причем для каждого активного пользователя сеансовые данные свои, и актуальны они только на время его работы. Если пользователь покидает базу (завершил сеанс) – его сеансовые данные удаляются.
Данные сеансов хранятся на кластере серверов, за это отвечает менеджер кластера, именно для этого существует сервис сеансовых данных. Чтобы ускорить работу, данные сеансов кешируются в рабочих процессах и в толстых клиентах.
При перезапуске кластера серверов данные сеансов будут сохранены. В том случае если активный пользователь не выполнил ни одного обращения к кластеру в течение 20-ти минут и сеанс не назначен соединению, то сеанс удаляется вместе с его данными.
Для поддержания сеанса тонкий клиент и веб-клиент обеспечивают обращение к кластеру не реже 1 раза в 10 минут.
Соединение 1С
Теперь разберемся с понятием соединение. Вновь обратимся к руководству администратора:
Соединение является средством доступа сеансов к кластеру серверов «1С:Предприятие», содержит ограниченное множество данных соединения, не отождествляется с активным пользователем.
Другими словами, с помощью соединения сеанс получает доступ к кластеру. При этом количество соединений ограничено, и как только таковое становится не нужным сеансу, оно возвращается в пул соединений.
В случае если сеанс не обращается к кластеру, то есть пользователь бездействует, ему не будет назначено соединение. Таким образом, сеанс может существовать без соединения.
Нужно отметить, что сеансовые данные хранятся на сервере, поэтому если разрыв соединения длится менее 20 минут, то на сеансе это не отразится, ведь соединение – всего лишь средство доступа.
Например, если случайно выдернуть сетевой кабель, пользователь не получит сообщение об ошибке, если успеть подключить кабель в течение 20 минут. В этом случае сеансу будет назначено новое соединение, и он продолжит работу. Пользователь даже не узнает о проблеме, за исключением, возможно, легкого «подвисания».
Также соединения используются для взаимодействия процессов кластера, то есть рабочие процессы (rphost) общаются с менеджером кластера (процесс rmngr) при помощи соединений, а не с помощью сеансов.
Отличия соединения от сеансов
Для того чтобы описать основное отличие данных понятий, приведем аналогию.
Допустим, что сеанс – это пассажир, а соединение – такси. Когда пассажиру необходимо добраться домой (сеансу нужно подключится к серверу), он вызывает такси (сеансу назначается соединение из пула соединений).
Если, добравшись домой, пассажир захочет снова поехать на работу, а такси уже уехало (после подключения случился разрыв соединения), то пассажир вызывает новое такси и едет по своим делам (сеансу назначается новое соединение).
В данной аналогии наглядно представлено, что сеанс и соединение далеко не одно и тоже, и сеанс может довольно легко перенести разрыв соединения.
Бурмистров Андрей
PDF-версия статьи для участников группы ВКонтакте
Если Вы еще не вступили в группу – сделайте это сейчас и в блоке ниже (на этой странице) появятся ссылка на скачивание материалов.
Статья в PDF-формате
Вы можете скачать эту статью в формате PDF по следующей ссылке: Ссылка доступна для зарегистрированных пользователей)
Ссылка доступна для зарегистрированных пользователей)
Ссылка доступна для зарегистрированных пользователей)
Ссылка доступна для зарегистрированных пользователей)
Если Вы уже участник группы – нужно просто повторно авторизоваться в ВКонтакте, чтобы скрипт Вас узнал. В случае проблем решение стандартное: очистить кеш браузера или подписаться через другой браузер.
Содержание курса и форма заказа: https://курсы-по-1с.рф/1c-v8/optimization/
35 учебных часов, подготовка к 1С:Эксперт, правильная настройка серверной части, оптимизация кода, мониторинг загруженности оборудования и прочие взрослые вещи.
Комментарии / обсуждение (11):
Михаил Морокин
Добрый день.
В управляемом приложении (8.3.16.1224) постоянно есть сеансы за прошлый и более ранние дни. И это несмотря на то, что в параметрах ИБ выставлены значения засыпания пассивного сеанса в 1200 с., а время завершения спящего сеанса 14400 с. В консоли кластера такие сеансы видны как не спящие.
В руководстве администратора есть такая фраза:
“Если компьютер клиента не находится в режиме энергосбережения, и клиентское приложение бездействует (не выполняет никаких действий пользователя), то оно периодически вызывает сервер «1С:Предприятия» с интервалом 5-10 минут для поддержания активности сеанса. Поэтому не рекомендуется устанавливать время засыпания сеанса меньше 10 минут.” Не является ли это противоречием? Получается, если я настрою время засыпания больше этих “5-10 минут” то сеанс не заснет фактически никогда (что, как мне кажется, и происходит), т.к. будет происходить периодический вызов сервера? Можно ли каким-либо другим образом отключать неактивных пользователей?
Шемякин Александр
Добрый день, Михал!
Спящие сеансы – это сеансы которые завершены пользователем, но сервер 1С их не закрывает (что-бы не создавать повторно). У вас видимо другой случай: клиентские сеансы запущены на рабочих местах пользователей и именно про это пишут в руководстве администратора. Если-бы у ваших клиентов 1С сверх того были открыты динамические списки – они-бы периодически посылали запросы.
Дмитрий Медведев
Здравствуйте, Андрей! Я просмотрел Ваш курс, прочитал в документации, и в некоторых других источниках… Всё равно не до конца понимаю некоторые моменты:
1. Если соединение это средство доступа, тогда почему при удалении соединения из консоли управления кластером, сеанс также удаляется? 2. Соединения между чем и кем создаются? Я всегда думал что между пользователем и рабочим процессом. А Вы пишете “Также соединения используются для взаимодействия процессов кластера, то есть рабочие процессы (rphost) общаются с менеджером кластера (процесс rmngr) при помощи соединений”. Или может быть соединения эти устанавливаются между несколькими источниками? 3. соединение физически это “канал связи” между чем-то и чем-то или, это просто “записи некой таблицы внутри оперативной памяти сервера приложения” с громким названием “Соединения”? Я провёл тест, вынул сетевой провод из сервера, а затем вставил. По логике, соединение (канал связи) должно было тут же оборваться, а оно не оборвалось…
Андрей Бурмистров
1. При удалении соединения сеанс остается, ему назначается новое соединение.
2. Как я и описал, это так же средство общения между процессами. Не понятно зачем устанавливать соединения между несколькими источниками. У вас есть только 2 процессы которые в момент времени могут между собой общаться.
3. Наверняка это знают только разработчики платформы, в документации такие тонкости не описаны.
Дмитрий Медведев
1. Теоретически это так и должно быть. Но практика показывает, что если удалить соединение, тогда сеанс тоже удаляется, при этом нового соединения ему автоматически не назначается. Кстати говоря, я ещё раз пересмотрел раздел продвинутого курса Евгения Гилёва, в котором он более кратко описывал работу в клиент-серверном режиме работы платформы, и он тоже показал и заострил внимание на том, если удалить соединение, тогда сеанс тоже удаляется. Но вот почему так происходит, тоже не объяснил. (( 2. Что значит “так же средство общения между процессами”. Разве установив соединение между двумя объектами, система сможет общаться с третьим объектом?
PS: например, я позвонил по телефону своей маме (для этого установил “соединение”), смогу ли я в этом случае одновременно пообщаться с братом, при условии что он находится не в том же месте, где мама? 3. А какие тут тонкости? Я просто хочу понять, что из себя представляет понятие “соединение”.
Определение “Соединение – это средство доступа сеанса, к кластеру серверов” звучит очень размыто. Появляется дополнительный вопрос “что такое СРЕДСТВО ДОСТУПА”? Толи это запись некой таблицы, толи реальный канал связи… 4. А если допустим это запись таблицы, тогда какой в ней смысл, почему не заменить две сущности “сеанс + сединеие” в какое-то одно название. Чтобы небыло двух этих объектов, а был какой-то им аналогичный один объект. 5. А ещё Вы упомянули про некий ПУЛ СОЕДИНЕНИЙ. Что когда соединение больше не нужно, оно возвращается в пул соединений. Получается, что количество соединений ограничено, и находятся все они в этом пуле, и получается, что сначала соединение может быть назначено одному сеансу, затем по ненужности вернуться в пул, а через некоторое время назначиться другому сеансу?
Андрей Бурмистров
1. Я говорю не про теорию, у меня на практике удаление соединения не приводит к удалению сеанса. Сеансу просто назначается другое соединение.
2. Причем тут 3 объекта. rphost общается с rmngr через соединение, эти соединения мы не видим в консоли.
3-4. Нельзя объединять сеанс и соединение, как минимум потому, что у соединения нет сеансовых данных. Как реализовано соединение в платформе на физическом уровне я не знаю, я не разработчик платформы, да если честно мне это все равно. На настройку кластера и оптимизацию это знание никак не повлияет. Если разработчики сделали 2 сущности, а не одну значит на то были причины, и мы можем либо тратить свое время на догадки почему они сделали именно так, либо просто принять это как есть и разобраться в том как это сейчас работает.
5. Да, все верно.
Дмитрий Медведев
ОГО, ЧУДЕСА, в тонком клиенте и правда нету удаления сеанса, и назначается новое соединение сеансу. У нас то просто УПП 1.3. Я все эксперименты из вашего курса и не только как правило делал на ней. А там основной режим работы: толстый клиент, обычное приложение. В обычном приложении почему-то при малейшем обрыве сети, соединение рвётся, сеанс удаляется. Даже если не надолго из сервера вытащить сетевой провод.