Учет и контроль. Механизм управления потреблением ресурсов кластера серверов 1С. Примеры использования

Публикация № 1003015

Администрирование - Системное

16
Начиная с редакции 8.3.13.х у платформы 1С появился механизм управления потреблением ресурсов кластера серверов. В свете последних новостей нужно сделать оговорку: Доступно только для лицензии КОРП. Но пока это время не наступило можно попробовать бесплатно.

Постановка задачи:

Честно говоря, сейчас все вопросы использования 1С, как администрирования, там и обычной работы отлично освещены в ИТС, с картинками и примерами.
Иногда даже полнее чем в сторонних публикациях, чего стоят например чек-листы по настройке серверов в продакте.
Поэтому эту статью можно рассматривать как иллюстрацию (дополнение к) официальной документации по механизму управления потреблением ресурсов платформы 1С:Предприятие 8.3.13 и следующих разумеется.
А так же возможные сценарии использования, если в комментариях появятся дельные варианты, я думаю это всем пойдет на пользу.
Многие побоялись ее (платформу) устанавливать, из суеверных соображений или из соображений практичности. Для них будет интересно.

Решение:

Как я уже писал ранее, каждое тестирование облачных платформ использовалось еще и для прояснения некоторых вопросов, возникающих у меня.
Не стало исключением и  1С в облачной платформе Microsoft. В Azure все в ажуре? (спасибо Microsoft за просто громадную сумму выделенную на тестовый период)
В нем попробовал на зуб, как работает механизм управления потреблением ресурсов.

Тестовый контур и порядок работы:

Использовалась виртуальная сеть:
Сервер Windows 2008 R2  2 ядра 8 Гб ОЗУ и 50 Гб HDD SSD Premium
Рабочие станции Windows 10 1809 1 ядро, 3.5 Гб ОЗУ 50 Гб HDD SSD Standart
1С:Предприятие 8.3 (8.3.13.1644),  сервер и клиентские приложения 32-х разрядные, конфигурация Бухгалтерия предприятия, редакция 3.0 (3.0.66.70)
Тестовые конфигурации 1С с сайтов www.gilev.ru и fragster.ru, а также обработка эмулирующая работу пользователей в 1С Бухгалтерия предприятия.
Тестирование проводилось с рабочих станций.

Как работает механизм вкратце: 

В консоли управления кластером добавлены два новых раздела: счетчики потребления ресурсов и ограничения потребления ресурсов.
Информация, накопленная счетчиками, может отображаться в консоли кластера (каких либо программных способов доступа к ней или созданию объектов из встроенного языка, пока не обнаружил, будет один лайфхак в конце статьи), а может еще и использоваться механизмом ограничения потребления ресурсов.
Замеры производятся либо в плавающем интервале заданной длительности  (когда счетчик настроен на анализ показателей за интервал времени, то срабатывание ограничений будет действовать пока показатели счетчика не станут меньше контрольных), либо за серверный вызов.
Собираемая информация условно поделена на три вида:

  • Время (Серверные вызовы, Процессорное время, Время вызовов СУБД, Время вызовов сервисов)
  • Объем данных в байтах (Объем оперативной памяти, занятой сеансом, Объем данных, прочитанных с диска, Объем данных, записанных на диск, Объем данных, которые были переданы и получены при работе с СУБД)
  • Количественные показатели (Количество серверных вызовов, Количество активных сеансов, Общее количество сеансов за интервал измерения)

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

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

Ограничение потребления ресурсов опирается на данные одного конкретного счетчика и при превышении любого из контролируемых показателей может выполнить четыре действия:

  • записать событие в технологический журнал и не делать ничего,
  • завершить серверный вызов,
  • завершить сеанс,
  • понизить приоритет потока.

На этом теория заканчивается, все более подробно описано в ИТС.

Стоят верблюд-сын и верблюд-отец.
Сын: Папа, а зачем нам на спине нужен горб?
Отец: В горбу, сынок мы накапливаем воду и когда идем по пустыне нас не мучает жажда.
С: Папа, а зачем нам такие копыта?
О: Это чтобы ходить по песку и ноги не проваливались.
С: А зачем нам такие большие и жесткие губы?
О: Это чтобы в пустыне можно было есть колючки
С: Тогда папа объясни мне, на хрена нам весь этот тюнинг в Саратовском зоопарке?...

© анекдот.ру 

Откуда мотивация понятно - для работы во фреше, а также на крупных внедрениях необходимо как то упорядочивать работу пользователей.
В MS SQL есть похожий механизм, честно говоря думал, что 1С к нему подцепится. Но он насколько я помню в редакции Enterprise.
Опять же если свести воедино информацию всех счетчиков, можно сделать подобие биллинга и выставлять счет по реально потребленным ресурсам. 
По большому счету, если проследить все последние изменения платформы, все они нацелены на поддержку облачных и немаленьких решений.
И последние редакции содержат столько наворотов, что использовать их все в одной обычной группе компаний просто не реально.
Если так пойдет и дальше, то нужна будет еще одна версия платформы между базовой и обычной - для среднего бизнеса.

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

Первый тест: ограничение количества активных сеансов для пользователя (для затравки): 

Это достаточно типовая задача ограничения "прожорливых" или забывчивых юзеров, знакомая каждому сисадмину.
Здесь все просто. Счетчик накапливает данные по активным сессиям,

а ограничение отслеживает, чтобы их было не больше единицы.

Вторую сессию для указанного в отборе пользователя не открыть.

Просто и со вкусом.
В консоли упоминается про сообщение об ошибке, и по логике вещей, было бы неплохо его показать, чтобы пользователь понял за что его срубают,
но это наверное для технологического журнала. У меня никаких сообщений не выводилось.
Тесты нацеленные на прерывание серверных вызовов или завершение сеанса проводить не хотелось.
С одной стороны понятно что они сработают, с другой у меня пока памяти на сервере хватает, да и те кто запускают отчеты ведут себя прилично.
На мой взгляд - срубать сессию в таких условиях не гуманно.
Понятно что на больших внедрениях это даст возможность пожертвовать одним ради стабильности кластера.
Часть счетчиков вообще не хватает воображения куда приспособить. Наверное у тех кто их программировал фантазия побогаче, а возможно это просто дубль всех показателей технологического журнала.
Гораздо интереснее разобраться, что значит "Понижение приоритета потока"

Второй тест: понижение приоритета потока для пользователя информационной базы: 

В ИТС это понятие не расшифровывается.
"понизить приоритет потока, который исполняет текущий серверный вызов" на сколько (во сколько) раз непонятно.
На глаз замедление заметно, как измерить это замедление для разных пользователей работающих в одной базе, чтобы получить количественные результаты я не придумал.
Этот вариант использования наверное самый востребованный. 
Если сделаете такой для главного бухгалтера в дни отчетности - он вас прославит в веках.
А сделать легко: фильтр по имени пользователя, тип отбора - все кроме выбранных, вид ограничения - понижение приоритета потока.
Вжух, и все менеджеры работают медленно, а бухгалтерия быстро.

Третий тест: понижение приоритета потока для информационной базы целиком: 

В нем как раз измерить количественно замедление получилось, но результаты - неоднозначные.

Для этого были запущены две одинаковые базы 1С, одна с применением ограничения "Понижение приоритета потока"

Для верности добавил еще подсчет серверных вызовов, вызовов СУБД и процессорного времени, потому что сомневался, что может считаться активной сессией, при таком фильтре, одна на пользователя или на всю базу
А так наверняка, что единичку они превысят. Дробные значения у меня консоль не приняла (точнее приняла, но при следующем открытии сбросила в ноль).

И на этих базах запущены тесты производительности из прошлых статей.
Их результаты в виде таблицы:

Тест/Конфигурация ВМ 1C
gilev.ru APDEX fragster.ru (Результат на поток)
    Временные таблицы Справочники Регистры сведений Регистры накопления Регистры бухгалтерии
Без ограничения 16,72 0,989 2 016,16 290,21 290,21 237,69 238,52
С ограничением процессорного времени 1,67 0,806 1 361,26 185,09 138,72 129,22 130,85

Единственное отличие - запускал тесты в обратном порядке.
Сначала APDEX с количеством 10 пользователей в базе.

Далее тесты уважаемого fragster.ru

 

Тренер утешает проигравшего боксера:
- А все-таки в третьем раунде ты своего противника здорово напугал.
- Чем это?
- Ему показалось, что он тебя убил.

© анекдот.ру

И на закуску тест с gilev.ru. С ним вообще вышел полный оверкиль. Я уже думал, что все зависло.
Пробовал несколько раз. Чистил кеши, перезагружал базу. Похоже новый механизм от 1С прибивает его начисто.


Позволю себе высказать предположение, что понижение приоритета нелинейное, чем активнее "нарушитель" использует процессор сервера, тем активнее 1С его притормаживает.
Поэтому APDEX пострадал не сильно, более агрессивный тест дал большее замедление, а тест Гилева, который упирается в сервер напрямую, замедлился совсем.
К тому же первые два теста "размазывают" нагрузку по нескольким сессиям, а тест Гилева идет под одним.
Впрочем возможно дело и в реализации самих тестов.

Продавцам зонтов надо молиться на дождливое лето.
Продавцам сандалий надо молиться на сухое лето.
Продавцам пива надо молиться на жаркое лето.
А продавцам водки некогда молиться, им надо продавать!

© анекдот.р 

Тест четвертый: нереализованный: 

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


Больше вариантов у меня не набралось. Это не значит, что их нет вообще. Может как раз для кого то критично количество байт переданных СУБД или количество серверных вызовов и они будут срубать пользователей за это.
Собственно для это и существуют комментарии к публикации, чтобы все желающие могли высказаться по существу.
За лучший вариант - небольшое вознаграждение.

Как все это работает: 

Все настройки созданных счетчиков и ограничений хранятся в файле реестра кластера 1CV8Clst.lst (1CV8Clsto.lst) расположенном в каталоге данных рабочего сервера, отмеченного как центральный.


Все результаты счетчиков записываются в текстовый файл rescntsrv.lst находящемся там же.
Формат совпадает.

Таким образом можно разбирать замеры счетчиков и передавать их в тот же Zabbix не настраивая технологический журнал.
Преимущество перед технологическим журналом в том что файл не разрастается, а старые события вытесняются новыми в пределах плавающего окна заданного в процессе настройки счетчика(ов).
Безусловно при определенной сноровке можно и ТЖ привести к подобному виду.

Итог:

Достаточно интересный механизм уже на сегодняшний день и наверняка он будет дорабатываться и обрастать новыми возможностями.
А они ограничены только вашей фантазией.
На сегодняшний день не хватает документации, из-за этого сложно выстроить варианты применения.
 

Очень хорошо, что в платформу добавляются новые возможности, облегчающие жизнь DBA.
Жалко, что скоро эти возможности будут доступны только обладателям лицензии КОРП.
 

Желающие что-то подтвердить, опровергнуть или еще раз уточнить для себя, не вижу что вас может остановить.
 

Ссылки на использованные публикации.

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

Если вы не представляете: что такое 1С Предприятие,  файл и зачем вам нужна эта кухня.

Все файлы из интернет считаете зараженными вирусом.

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

А платить вы за это не будете так как программист с десятилетним стажем.

Закройте эту страницу не продолжая чтения дальше.

Для адекватных людей:

Если у вас есть конкретные замечания или предложения по улучшению - пишите.

16

См. также

Специальные предложения

Вознаграждение за ответ
Показать полностью
Лучшие комментарии
5. capitan 1172 15.02.19 16:35 Сейчас в теме +1 $m
(4)Т.е. этим механизмом вы длительные транзакции не поймаете и соответственно сессии по ним не прибьете
Nefilimus; +1 Ответить
Остальные комментарии
Избранное Подписка Сортировка: Древо
1. capitan 1172 15.02.19 12:00 Сейчас в теме
Как и обещал - вознаграждение за лучший сценарий использования
2. Gilev.Vyacheslav 1821 15.02.19 12:47 Сейчас в теме
самый реальный сценарий - это рубить сессии где местные чудомастера не могут оптимизировать потребление памяти , особенно фоновики (хоть как то приучить очищать переменные, не делать циклические ссылки), это не так муторно как лазить в ТЖ за событиями типа MEM
да и просто отстреливать все длительные транзакции, в нормальной OLTP системе не должно быть транзакций минутной длительности
причем первоначально можно логировать по ТЖ кто превышает нормы
от вознаграждения воздержусь
3. capitan 1172 15.02.19 12:53 Сейчас в теме
(2)Ну я может его и не дам )
Как вы собираетесь этим механизмом ловить длительные транзакции ?
4. Gilev.Vyacheslav 1821 15.02.19 16:26 Сейчас в теме
(3) собираете счетчиками статистику сначала
затем открываете собранное например за сутки
смотрите на известные вам тяжелые длительные операции, у меня например это количество и длительность серверных вызовов, более строгий порог - процессорное время, но понятно что ваши же слова верну - делать надо то, что понимаешь
думаю у многих такой вещью будут не оптимальные обмены с большими размерами данных в пакетах
5. capitan 1172 15.02.19 16:35 Сейчас в теме +1 $m
(4)Т.е. этим механизмом вы длительные транзакции не поймаете и соответственно сессии по ним не прибьете
Nefilimus; +1 Ответить
6. Gilev.Vyacheslav 1821 15.02.19 20:14 Сейчас в теме
7. capitan 1172 15.02.19 20:21 Сейчас в теме
(6)Да это было сразу понятно. Где уж нам уж.
Вы расскажите как.
Потом вместе посмеемся
astratek; Алексей_mir2mb; +2 1 Ответить
11. capitan 1172 22.02.19 09:48 Сейчас в теме
(9)Про особенность Вячеслава приходить в публикации и говорить что он Д'Артаньян, а все остальные мушкетеры я знаю.
И давно уже на нее не обижаюсь. Просто в реальном мире наверное не хватает внимания.
А вот вас вижу впервые. Поэтому предлагаю.
Давайте по 100 стартмани на кон и если вы сможете именно этим механизмом гарантированно срубать пользователей за длительные транзакции - они ваши.
Именно транзакции, а не запросы по отчетам, не заполнение табличных частей и т.п. что тоже серверные вызовы дает и процессор загружает и СУБД.
А если нет - то мои
Все по честному.
Тем более это легко проверяется. В одной сессии начинаем транзакцию и встаем на ней в отладчике, а в другой - считаем оборотку с начала веков, можем табличку цен сортировать
А если нет, то я уж извиняйте, считаю вас балаболом
12. oldcopy 120 22.02.19 10:19 Сейчас в теме
(11)
А вот вас вижу впервые. Поэтому предлагаю.


А причем здесь я? Я не заявлял, что смогу отловить этим механизмом длительные транзакции. При этом у меня нет оснований не верить Гилеву, так как компетенция этого человека общеизвестна и будет повыше нашей с вами.

(11)
Про особенность Вячеслава приходить в публикации и говорить что он Д'Артаньян, а все остальные мушкетеры я знаю.


Так дело в том, что он действительно Д'Артаньян и он может, а ваши попытки ерничать при этом выглядят по меньшей мере смешно. Поэтому не завидовать и ерничать надо, а учиться, учиться и еще раз учиться.
13. capitan 1172 22.02.19 10:41 Сейчас в теме
(12)Когда он сможет и напишет про это публикацию, я первый поставлю ему плюс.
Про компетенцию не буду говорить. У 1С есть реестр 1С Спецов с их заслугами и перечислением что они могут, если знаете, вот людям из первой страницы оттуда я верю и то с оговоркой, что они могут всех нюансов не знать.
Тем более они не будут рассказывать что они могут без доказательств.
И знаете, я думаю ни один из них не будет пиарится на начинающих, к которым вы относите меня.
Я знаете ли MSCE и моих коллег очень повеселил доклад Вячеслава про оптимизацию MS SQL.
Но они не пошли писать туда комментарии, как минимум из-за свой занятости.
А безоговорочно я верю в очень ограниченное число вещей и вам так же советую поступать.
Кумиры знаете ли стареют
14. oldcopy 120 22.02.19 11:20 Сейчас в теме
(13)
Я знаете ли MSCE


А давно это MCSE стал считаться компетенцией по MS SQL?

(13)
Я знаете ли MSCE и моих коллег очень повеселил доклад Вячеслава про оптимизацию MS SQL.
Но они не пошли писать туда комментарии, как минимум из-за свой занятости.


Здоровая критика еще никому не мешала, но если по существу сказать нечего, то лучше пойти поработать, как-то так.

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

(13)
Про компетенцию не буду говорить. У 1С есть реестр 1С Спецов с их заслугами и перечислением что они могут, если знаете, вот людям из первой страницы оттуда я верю


Да слышал я уже эту песню, то у меня рейтинг на Инфостарте был не тот, и вообще мне сидеть помалкивать надо с таким рейтингом, теперь я понимаю, что у Гилева каких-то сертификатов не хватает, чтобы вы снизошли до него со своих сияющих высот. Тогда вам лучше в компанию к одному известному тут пейсателю, уж он то по вашей табели о рангах точно должен быть корифеем всех наук.
15. capitan 1172 22.02.19 11:28 Сейчас в теме
(14)
Здоровая критика еще никому не мешала, но если по существу сказать нечего, то лучше пойти поработать, как-то так.

В принципе вот этим вы сами всем и ответили в том числе и себе
8. krollzlat 20.02.19 17:18 Сейчас в теме
На прошлой работе, в ДО непонятно почему зависало фоновое задание и процессы не стартовались.Выход был только один- перезагружать физический сервер (перезагрузка службы не помогала). Может этот чудо механизм помог бы. Как вариант защита от запуска отчетов без отборов, которые могут повесить базу надолго...
16. Artemy4117 14.03.19 09:35 Сейчас в теме
Это очень хорошо, что 1С сделало такой механизм и одновременно очень печально, что прикрутили его к лицензии корп, когда у большинства лицензия проф.
И еще печально, что силы разработчиков 1С тратятся на это , а не например на доработку механизма работы с криптографией, кому нужна это криптография и умение работать ГОСТовскими сертификатами.
Можно и в командной строке написать, средствами ос шифрование и подписание .Защищенное соединение (https) с ГОСТовскими сертификатами устанавливать не средствами 1С, а сторонними программами туннели пробрасывать. Ну подумаешь не реализовано в 1С и ГОСТы 2012 года.
Оставьте свое сообщение