Имя: Пароль:
1C
 
Оценка производительности типовым механизмом БСП
,
0 mzelensky
 
01.10.21
15:41
Доброго времени суток!

Сижу разбираюсь в типовом замере производительности БСП. Есть ряд вопросов, ответы на которые не могу найти:

1) Как методологически правильно выполнять замер, если процесс начинается на "Клиенте", потом уходит на "Сервер" и там запускаются длительные фоновые операции ?

2) У типового метода "завершить замер" есть параметр - "Автозавершение". Но нигде не могу найти описание - по какому принципу система понимает ,что замер нужно завершить.

Может статьи есть актуальные или просто кто-то "в теме" ?
1 pechkin
 
01.10.21
15:42
автозавершение - это когда на клиенте начинаешь и само по окончании процедуры.
но записывается все не сразу, а как то по хитрому.
можно не делать автозавершение, а руками завершать когда нужно
2 mzelensky
 
01.10.21
15:44
(1) Так а как система определяет, что состоялся конец процедуры?

Я на тесте делаю так:
3 mzelensky
 
01.10.21
15:45
(2) + Клиентская процедура, в ней начинаю замер с автозавершением. Далее ухожу в серверную процедуру - что-то там делаю.

Выполняю это в предприятии. Через какое-то время замер действительно появляется в РС, но я понять не могу - как система определяет "финиш" ?
4 ДенисЧ
 
01.10.21
15:48
(3) За посмотреть в код у вас дают эцих?
5 mzelensky
 
01.10.21
15:57
(4) Я не хочу "методом тыка" пытаться понять всю ту "наркоманию", которую выжали из себя разработчики БСП. Это не прокатывает.

Я был бы очень рад, если бы вся эта "кухня" была нормально описана в официальных источниках. Но никакой адекватной информации в официальных источниках я не нашел.
6 ДенисЧ
 
01.10.21
15:58
(5) А зачем тыком? Для этого женщины существуют.
А логику и и прочую "кухн'ю" программы лучше всего понимать по коду.
7 ДенисЧ
 
01.10.21
15:59
"Для начала замера времени выполнения ключевой операции необходимо вызвать функцию НачатьЗамерВремени общего модуля ОценкаПроизводительностиКлиентСервер. Если операция начата на клиенте, то она завершится автоматически. Если операция начинается на сервере, то для завершения замера времени необходимо вызывать функцию ЗакончитьЗамерВремени общего модуля ОценкаПроизводительностиКлиентСервер."
https://its.1c.ru/db/bsp22doc#content:218:1:issogl1_настройка

Этого вполне достаточно, чтобы использовать.
8 mzelensky
 
01.10.21
16:00
(7) Это и так понятно.
9 mzelensky
 
01.10.21
16:00
Теперь ответь мне на этот вопрос:
10 mzelensky
 
01.10.21
16:00
Как методологически правильно выполнять замер, если процесс начинается на "Клиенте", потом уходит на "Сервер" и там запускаются длительные фоновые операции ?
11 ДенисЧ
 
01.10.21
16:02
(10)
Пример замера времени проведения документа на сервере:

Копировать в буфер обмена
Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
     Если ОбменДанными.Загрузка Тогда
         Возврат;    
     КонецЕсли;    
     ВремяНачала = ОценкаПроизводительностиКлиентСервер.НачатьЗамерВремени();
     КлючеваяОперация = "ПроведениеРеализацияТоваровИУслуг";
     ДополнительныеСвойства.Вставить("КлючеваяОперация", КлючеваяОперация);
    ДополнительныеСвойства.Вставить("ВремяНачала", ВремяНачала);
КонецПроцедуры // ПередЗаписью
Процедура ОбработкаПроведения(Отказ, РежимПроведения)
     // .. Заполнение движений
     Движения.Записать();
     КлючеваяОперация = Неопределено;
     ВремяНачала = Неопределено;
     Если ДополнительныеСвойства.Свойство("КлючеваяОперация", КлючеваяОперация) И ДополнительныеСвойства.Свойство("ВремяНачала", ВремяНачала) Тогда
         ОценкаПроизводительностиКлиентСервер.ЗакончитьЗамерВремени(КлючеваяОперация, ВремяНачала);
     КонецЕсли;
КонецПроцедуры
12 pechkin
 
01.10.21
16:02
система определяет через обработчик ожидания он запустится как только процедура закончится
13 mzelensky
 
01.10.21
16:03
(11) На "сервере" это самое просто. Это у же работает у меня.

Я другое спрашивал:

Как методологически правильно выполнять замер, если процесс начинается на "Клиенте", потом уходит на "Сервер" и там запускаются длительные фоновые операции ?
14 ДенисЧ
 
01.10.21
16:04
(13) Мне остаётся только повториться.
    Если ДополнительныеСвойства.Свойство("КлючеваяОперация", КлючеваяОперация) И ДополнительныеСвойства.Свойство("ВремяНачала", ВремяНачала) Тогда
         ОценкаПроизводительностиКлиентСервер.ЗакончитьЗамерВремени(КлючеваяОперация, ВремяНачала);
     КонецЕсли;

Прокидывай в регламентное это свойство и по нему заканчивай.
15 mzelensky
 
01.10.21
16:04
(11) И кстати, так не правильно "проведение" замерять. Замер должен заканчиваться ПОСЛЕ завершения транзакции. А в твоем примере он завершает ДО.
16 mzelensky
 
01.10.21
16:05
(14) В типовой что-то подобное делается через параметры сеанса. Т.е. это УЖЕ делается. Но нигде толком не описано как этим пользоваться
17 ДенисЧ
 
01.10.21
16:05
(15) Спорь с 1с и ИТСом, а не со мной.Я ссылку приложил на официальную документацию.
18 mzelensky
 
01.10.21
16:06
(17) Только старую. Сейчас в БСП нет этой процедуры

"ОценкаПроизводительностиКлиентСервер.ЗакончитьЗамерВремени"
19 ДенисЧ
 
01.10.21
16:08
20 mzelensky
 
01.10.21
16:08
(12) Это где-то описано документально или "раскапывать" код нужно?

Т.к. от версии к версии БСП принцип работы многих механизмов значительно меняется
21 pechkin
 
01.10.21
16:08
ОценкаПроизводительности.ЗакончитьЗамерВремени
главное время начала запомнить
22 ДенисЧ
 
01.10.21
16:08
Пример замера времени выполнения регламентного задания (сценарий № 2):

// Процедура обработки регламентного задания по выгрузке данных
Процедура ЭкспортОценкиПроизводительности(КаталогиЭкспорта) Экспорт
    
    ДатаНачала = ОценкаПроизводительности.НачатьЗамерВремени();
    // Далее следует текст выполнения регламентного задания -->>
    
    ОценкаПроизводительности.ЗакончитьЗамерВремени("ЭкспортОценкиПроизводительности", ДатаНачала);
    
КонецПроцедуры
23 mzelensky
 
01.10.21
16:10
(22) Это тот же вызов на "Сервере"
24 Smit1C
 
01.10.21
16:12
(23) так время на вызов сервера с клиента занимает миллисекунды, этим можно пренебречь
25 ДенисЧ
 
01.10.21
16:12
(23) Запипипипипил.
Открой документацию, исходный текст, пиво и сиди разбирайся
26 pechkin
 
01.10.21
16:14
(23) тебе нужно на клиенте заканчивать?
27 pechkin
 
01.10.21
16:14
с клиента вызови серверную функцию
28 Дык ё
 
01.10.21
17:08
29 ДенисЧ
 
01.10.21
17:16
(28) БСП 2.5.6 ты втираешь какую-то древность ))
30 ДенисЧ
 
01.10.21
17:16
*2.4.6
31 Дык ё
 
01.10.21
17:22
(29) ой да ладно. я просто не помню, когда в доке появилось описание сценариев измерений. в 2.2 ещё не было. может поэтому товарищ и не находит..
так то твоя ссылка свежее конечно
32 mzelensky
 
01.10.21
17:55
(31) У нас сейчас БСП 3.1.4
33 mzelensky
 
01.10.21
18:00
(28) Почитаю, спасибо. Хотя конечно 2.4.6 капец как устарела