|
Подсистема Оценка производительности. Запись замеров времени | ☑ | ||
---|---|---|---|---|
0
slafor
16.05.24
✎
10:04
|
При внедрении подсистемы оценки производительности в сильно доработанную конфигурацию мы столкнулись с проблемой блокировок. Не знаю, есть ли здесь связь, но логично предположить, что поскольку подсистема делает запись в один регистр сведений - "ЗамерыВремени", то при большом количестве замеров и большом количестве одновременно работающих пользователей очень часто будут возникать одновременные попытки записи в этот регистр.
Замеры делаются при открытии списков, открытии форм, записи, проведении документов, формировании отчётов и при запуске регламентных заданий. Одновременно работающих пользователей также очень много (> 1000). В описаниях работы подсистемы везде пишут такую фразу: "замеры записываются в регистр сведений не по отдельности, а пакетами. Сделано это, чтобы оптимизировать нагрузку на систему". Может быть, в клиентских замерах (ОценкаПроизводительностиКлиент) так и есть. Но в серверных - из общего модуля ОценкаПроизводительности - процедура ЗакончитьЗамерВремени вызывает другую процедуру ЗафиксироватьДлительностьКлючевойОперации, которая сразу делает запись в регистре. И мы проверили - записи действительно появляются там сразу после окончания замера, а не "порциями". Можете подсказать, что с этим можно сделать? Реально, при таком кол-ве замеров и пользователей могут возникать блокировки? |
|||
1
Krendel
16.05.24
✎
10:16
|
У Вас на такой базе, должна быть куплена поддержка лицензий КОРП, обратитесь туда
|
|||
2
palsergeich
18.05.24
✎
23:30
|
(1) Не совсем так
Если лицензии до 2019 года и были обновлены, то корп может не быть, если иные возможности кроп кроме 500 юзеров и 12 ядер не используются |
|||
3
palsergeich
18.05.24
✎
23:37
|
(0)
Можете подсказать, что с этим можно сделать? Реально, при таком кол-ве замеров и пользователей могут возникать блокировки? Они могут возникать в любом случае, особенно при очистке. Но скажу так - ситуация крайне редкая. То что там первое измерение - текущая дата в МС - очень спасает. Но большие транзакции что в случае единовременного сброса, что в случае накопительного - приводить могут, но это достаточно редко (единицы раз в месяц). но главный враг - очистка, когда удаляется кусок за день РЗ хой - 2-5 минут блокировки. |
|||
4
Garykom
гуру
18.05.24
✎
23:48
|
(0) В чем проблема отключить подсистему?
|
|||
5
Garykom
гуру
18.05.24
✎
23:51
|
(4)+ Либо сделать ход конем, доработав ее
Создайте несколько РС "ЗамерыВремени_ИдентификаторПользователя" И разделите запись Затем если хочется то можно регзаданием чистить эти "ЗамерыВремени_ИдентификаторПользователя", перенося все в общий "ЗамерыВремени" |
|||
6
Garykom
гуру
18.05.24
✎
23:55
|
(5)+ https://infostart.ru/1c/articles/1418255/
Чтобы ручками РС не создавать |
|||
7
slafor
19.05.24
✎
20:23
|
(5) Если там > 1000 пользователей, мне надо будет создать > 1000 РС? )
(4) Можно и отключить, но тогда зачем её создавать? Отключить можно лишь для того, чтобы убедиться в том, что в блокировках виновата именно эта подсистема. (3) Да, очистка действительно может наглухо блокировать регистр. |
|||
8
Garykom
гуру
19.05.24
✎
20:27
|
(7) >Если там > 1000 пользователей
то вместо записи в РС лучше использовать Prometheus, Grafana или нечто вроде внешнее |
|||
9
MaximSh
20.05.24
✎
16:43
|
(0) Попробуйте установку блокировки по значениям КлючеваяОперация и НомерСеанса. Это поможет, потом упретесь в индексы.
|
|||
10
palsergeich
20.05.24
✎
19:25
|
(7) версия платформы какая?
Если ниже 22ой и MSSQL - то отключите просто эскалацию на таблице этого регистра. После перехода на 22 и выше я блокировки на нем вижу только в момент очитстки или когда кривой код скидывает слишком много замеров |
|||
11
timurhv
20.05.24
✎
22:40
|
(0) >Реально, при таком кол-ве замеров и пользователей могут возникать блокировки?
Какая версия БСП? В 3.1.8 и выше измерения: КлючеваяОперация ДатаНачалаЗамера НомерСеанса ДатаЗаписиНачалоЧаса Блокировки могут быть если удаляется\записываются свыше 50тыс записей по отбору измерений. Глянул процедуру очистки, там удаление идет по минимальной ДатаЗаписиНачалоЧаса за один запуск рег.задания. Можно закомментировать типовой код выполнения, узкое место тут: НаборЗаписей.Отбор.ДатаЗаписиНачалоЧаса.Установить(ДатаЗаписиНачалоЧаса); НаборЗаписей.Записать(Истина); Добавить свой цикл выборки запроса (без минимума в запросе, просто условие ДатаЗаписиНачалоЧаса < &ГраницаУдаления): ВЫБРАТЬ ЗамерыВремени.ДатаЗаписиНачалоЧаса КАК ДатаЗаписиНачалоЧаса, ЗамерыВремени.КлючеваяОперация КАК КлючеваяОперация, ЗамерыВремени.НомерСеанса КАК НомерСеанса ИЗ РегистрСведений.ЗамерыВремени КАК ЗамерыВремени ГДЕ ЗамерыВремени.ДатаЗаписиНачалоЧаса < &ГраницаУдаления ... НаборЗаписей.Отбор.ДатаЗаписиНачалоЧаса.Установить(ВыборкаЗапросаЗамерыВремени.ДатаЗаписиНачалоЧаса); НаборЗаписей.Отбор.НомерСеанса.Установить(ВыборкаЗапросаЗамерыВремени.НомерСеанса); НаборЗаписей.Отбор.КлючеваяОперация.Установить(ВыборкаЗапросаЗамерыВремени.КлючеваяОперация); НаборЗаписей.Записать(Истина); |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |