Вход | Регистрация
 

Оценка производительности типовым механизмом БСП

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

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

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

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

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

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

Выполняю это в предприятии. Через какое-то время замер действительно появляется в РС, но я понять не могу - как система определяет "финиш" ?
   ДенисЧ
 
4 - 01.10.21 - 15:48
(3) За посмотреть в код у вас дают эцих?
   mzelensky
 
5 - 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_настройка

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

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

Процедура ОбработкаПроведения(Отказ, РежимПроведения)
    // .. Заполнение движений

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

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

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

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

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

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

// Процедура обработки регламентного задания по выгрузке данных

Процедура ЭкспортОценкиПроизводительности(КаталогиЭкспорта) Экспорт
    
    ДатаНачала = ОценкаПроизводительности.НачатьЗамерВремени();
    // Далее следует текст выполнения регламентного задания -->>

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


Список тем форума
 
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование.
Фредерик Брукс-младший
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.