gifts2017

Одновременно работающие пользователи по данным журнала регистрации

Опубликовал Александр Полетаев (Alias) в раздел Администрирование - Журнал регистрации

По данным журнала регистрации на СКД строится отчёт "Максимальное количество (и полный список) одновременно работающих в базе пользователей", с периодичностью до часа. Дополнительно варианты отчёта: -Полный лог входов-выходов пользователей. -Кто и когда запускал Конфигуратор. -С каких компьютеров пользователи заходили в базу. UPD 24.08.2016 - Диаграмма Ганта работы пользователей

Когда-то разработал отчёт по количеству пользователей в базе. Сырой был, но работал. Потом увидел публикацию http://infostart.ru/public/534462/ и вспомнил о тех сложностях, которые у меня возникли. Принцип отчтёта аналогичен описанному ("на каждый вход +1, на каждый выход -1"), однако при таком накопительном подходе за большие периоды накапливается большая ошибка - из-за сеансов, которые не были корректно завершены. Также применялся метод "обнуления в начале дня", однако ясно, что такой подход не даёт правильных значений -- т.к. при обычной пятидневке некоторые пользователи могут не закрывать окно 1С по несколько дней.

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

Для реализации этого алгоритма задаётся время (в часах), в течение которого незавершённые сеансы считаются активными. Значение это влияет только на сеансы, по которым не был зафиксирован штатный выход. То есть вполне допускается наличие непрерывных многодневных сессий с последующим корректным выходом. Путём последовательного перебора таблицы, полученной из ЖР, по каждой его строке накапливается список текущих сессий, в который попадают и те сессии, по которым не зафиксирован выход. Таким образом в конце накапливается большая погрешность, и для её устранения проводится второй цикл по таблице, но уже в обратную сторону. При этом (сообразно с заданным временем) из текущих сессий удаляются те, которые считаются завершёнными по таймауту. Также составляется внятный текстовый список текущих пользователей для вывода в отчёт. В начало этого списка помещается число пользоваталей (в формате 3.0 с лидирующими нулями), что позволило в итогах по периоду брать Максимум() от строки.

После реализации отчёта в нём на базе основного набора данных разработаны дополнительные настройки:

  • "Только диаграмма без списка" (работает быстрее за счёт того что не нужно собирать список), с периодичностью день и час,
  • "Кто и когда запускал конфигуратор",
  • "С каких компьютеров пользователи осуществляют вход в базу"

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

Спасибо Kaavan и его публикации http://infostart.ru/public/534462/ за стимул к действию.

UPD 24.08.2016

- добавлена диаграмма Ганта работы пользователей. Графически видно кто когда запускал 1С, кто отключается на ночь, кто нет... Кто только пробует заходить в 1С, а кто сидит там постоянно.

Скачать файлы

Наименование Файл Версия Размер
Максимальное количество пользователей 15
.erf 17,37Kb
14.07.16
15
.erf 2 17,37Kb Скачать

См. также

Подписаться Добавить вознаграждение
Комментарии
1. Амир Фарукшин (farukshin) 02.09.16 14:35
Путём последовательного перебора таблицы, полученной из ЖР

Александр, на скриншотах видно, что максимум 20 активных пользователей.
Как долго будет формироваться отчет на более нагруженных базах 1С (от 0,5 млн. записей ЖР в рабочие дни)? В таких случаях пользуются системой мониторинга сети http://infostart.ru/public/545959/
2. Александр Полетаев (Alias) 06.09.16 12:52
(1) farukshin
Например, в типовой ERP есть типовой отчёт "Анализ активности пользователей", который тоже может попробовать ответить на вопрос "какие пользователи когда работали в базе".

Он формируется около 300 секунд (5 минут) за неделю, и может выдать неверные данные. Например, ситуации, когда он показывает 36 часов работы (в сутки) при 0 подключений (встречалось при переходящих сеансах из дня в день). Максимальное количество работающих пользователей считается не единомоментно, а по итогам всего дня -- даже если все заходили в разное время на 5 минут. Диаграммы Ганта нет.

Мой отчет формируется 12 секунд за неделю (в 20 раз быстрее), корректно обрабатывает разрывы сессий (начало без завершения) и сессии, переходящие из дня в день. Максимальное количество пользователей считается честно -- по мгновенному срезу. И выводится наглядная диаграмма Ганта.

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

Собственно, что я хотел сказать: мой отчёт писался не для того чтобы решить проблему нагруженных баз и миллиона записей ЖР (для этого вообще прямой анализ ЖР кажется довольно спорным решением), а для того чтобы расширить и улучшить возможности типового отчёта -- т.е. вывести данные быстрее, точнее и красивее. :)