<?xml version="1.0"?>
<ns:config xmlns:ns="http://v8.1c.ru/v8/tech-log">
<ns:log location="F:\LOGS\P_ERPtest_ForCup\all" history="4">
<ns:event>
<ns:eq property="Name" value="CALL"/>
<ns:eq property="p:processName" value="P_ERP_TEST"/>
<ns:ge property="Duration" value="50000"/>
</ns:event>
<ns:event>
<ns:eq property="Name" value="TLOCK"/>
<ns:eq property="p:processName" value="P_ERP_TEST"/>
</ns:event>
<ns:event>
<ns:eq property="Name" value="TDEADLOCK"/>
<ns:eq property="p:processName" value="P_ERP_TEST"/>
</ns:event>
<ns:event>
<ns:eq property="Name" value="DBMSSQL"/>
<ns:eq property="p:processName" value="P_ERP_TEST"/>
</ns:event>
<ns:event>
<ns:eq property="Name" value="SDBL"/>
<ns:eq property="p:processName" value="P_ERP_TEST"/>
</ns:event>
<ns:property name="all"/>
</ns:log>
<ns:plansql/>
<ns:dbmslocks/>
</ns:config>
cat rphost*/*.log |
grep -P ',CALL,.+,Context=' |
sed -r 's/\xef\xbb\xbf//g; s/^[0-9]+:[0-9]+.[0-9]+-//; s/CALL,.+,Context=/CALL,Context=/; s/,Interface=.+$//' |
gawk -F',CALL,' '{{Dur[$2]+=$1; Execs[$2]+=1}} END {for (i in Dur) print Dur[i] "," Execs[i] "," i }' |
sort -rnb |
head -n 1000 > top_call_context.txt
К сожалению, в нашем случае замеры времени ключевой операции не сохранялись в регистре. Необходимо добавить в конфигурацию замер времени. Для этого добавим следующие строки кода перед и после выполнения процедуры открытия формы.
Среднее время открытия формы (без установленных отборов) под пользователем с полными правами составляет 33 секунды. Под пользователем с ограниченными правами 86 секунд.
Замеры с помощью конфигуратора показали среднее время выполнения операции под пользователем с полными правами 21 секунду.
Замеры с помощью конфигуратора показали среднее время выполнения операции под пользователем с ограниченными правами – 31 секунду.
Пример плана запроса, полученного с помощью ЦУП представлен на скриншоте
<?xml version="1.0" encoding="UTF-8"?>
<config xmlns="http://v8.1c.ru/v8/tech-log">
<log location="E:\psn\TJ_Logs\Client_Full" history="4">
<event>
<eq property="process" value="1cv8"/>
<ne property="name" value=""/>
</event>
<event>
<eq property="process" value="1cv8c"/>
<ne property="name" value=""/>
</event>
<property name="Interface">
<event>
<eq property="name" value=""/>
</event>
</property>
<property name="all"/>
</log>
</config>
Необходимо включить сбор ТЖ, выполнить операцию и завершить сбор, чтобы удобнее анализировать небольшой объем информации.
Получаем ТЖ следующего содержания.
Далее нужно перейти на закладку HTTS, установить флаги Capture HTTPS CONNECTs, Decrypt HTTPS traffic, указать Protocols <client>;ssl3;tls1.0;tls1.2. Затем нажать Actions > Export Root Certificate to Desktop.
При разворачивании и изучении свойств (параметров формы response/props) удается найти коллекцию с количеством элементов более 18 тыс., что достаточно много.
Найдем соответствующую коллекцию в конфигураторе. Для этого во время отладки проанализируем табличные части и реквизиты объекта, а также реквизиты формы с типами Таблица, Дерево, Список, Произвольный тип.
Для более быстрого поиска воспользуемся результатами замера производительности конфигуратором (скриншоты в предыдущем разделе). В списке операций находим строки, которые выполнялись более 18 тыс. раз и переходим в соответствующую процедуру. Затем в конце этой процедуры устанавливаем точку останова и с помощью Отладка > Вычислить выражение (Shift+F9) проверяем количество элементов в коллекциях.
Находим таблицу значений ТоварыРаспоряженийКДоставке с количеством элементов более 18 тыс. и для проверки влияния на скорость открытия формы устанавливаем заглушку в коде, которая ограничивает количество элементов в таблице до 1000.