Skip to content

Анализ производительности - FineReport Справка | Разработка отчетов | Отчеты | Учебные пособия

Анализ производительности

1. Обзор

1.1 Версия

Версия FineBIФункциональные изменения
6.01) Полагаясь на встроенный плагин "FineBI Direct Connect Performance Analysis Plug-inПлагин не активирован по умолчанию и должен быть активирован вручнуюВерсия плагина следует за версией JAR и обновляется автоматически2) Поддерживать анализ производительности только при работе с данными в режиме реального времени
6.0.161) Функциональные возможности больше не предоставляются плагином и интегрированы непосредственно в продукт2) Поддержка анализа производительности в режиме реального времени и извлеченных данных3) Оптимизация трудоемкой логики вычислений на этапе выполнения

1.2 Сценарии применения

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

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

1.3 Функциональный профиль

FineBI предоставляет функцию "Аналитика производительности", которая помогает пользователям быстрее и проще решать проблемы производительности в следующих областях: предварительный просмотр приборной панели, операции редактирования и процесс редактирования наборов данных Self-service.

1.4 условия

(1) Для FineBI 6.0.16 и более поздних версий функция "Анализ производительности" предоставляется продуктом по умолчанию.

В FineBI 6.0.15 и более ранних версиях функция "Анализ производительности" опирается на встроенный в продукт плагин "FineBI Direct Connect Performance Analysis Plugin".

По умолчанию плагин отключен и обновляется автоматически вместе с версией продукта. Если вы хотите использовать функцию "Анализ производительности", включите плагин.

(2) В FineBI 6.0.16 и более поздних версияхфункция "Анализ производительности" поддерживает анализ производительности на основе данных в реальном времени и извлеченных данных.

В FineBI 6.0.15 и более ранних версиях функция "Анализ производительности" поддерживает анализ производительности только с данными в реальном времени, а не с извлеченными данными.

2. Операционные шаги

2.1 Анализ эффективности реализации

Поддержка функции "Анализ производительности" во многих местах FineBI.

элементОписание местоположения
номераПоддержка "Анализа производительности" на экране редактирования данных в теме "My Analysis".
сборкиПоддержка "Анализа производительности" на экране редактирования компонентов темы "My Analysis".
приборные панели"Анализ производительности" поддерживается на экране редактирования приборной панели в теме "My Analysis ".
"Анализ производительности" поддерживается на экране предварительного просмотра приборной панели в теме "My Analysis ".
"Поддержка анализа производительности при просмотре панелей в каталоге

2.2 Просмотр основной информации

После нажатия кнопки "Анализ производительности" в режиме онлайн отображается основная информация анализа производительности. Основная информация" может помочь пользователям сделать первоначальное заключение о причинах проблем с производительностью.

Как показано на рисунке ниже:

Поля таблицы "Основная информация" описаны в следующей таблице:

полеинструкции
пользовательПользователи FineBI, которые запускают анализ производительности
Название ресурса уровня 1Когда содержанием анализа производительности являются данные: имя первичного ресурса - это имя набора данныхКогда содержимое анализа производительности является приборной панелью: имя ресурса первого уровня - это имя приборной панели
Название вторичного ресурсаКогда содержимым анализа производительности являются данные: имя вторичного ресурса - это имя шага анализа в наборе данныхКогда содержание анализа производительности является приборной панели: вторичное имя ресурса является имя компонента в приборной панели
Идентификатор запросаUUID, уникальный номер для каждого запроса.
Время ожидания запроса (мс)Время от момента нажатия пользователем на запрос до перехода на этап подготовки запроса
Этап подготовки запроса (мс)Анализ плана выполнения запросовКогда запрос напрямую связан с данными: представляет собой этап генерации SQL.Когда содержимым запроса являются извлеченные данные: этап формирования описания запроса от имени механизма извлечения
Время выполнения запроса (мс)Когда запрос напрямую связан с данными: представляет собой время выполнения напрямую связанной базы данных.Когда из запроса извлекаются данные: представляет собой время вычисления механизма извлечения.
Время передачи данных (мс)Время возврата результатов запроса в FineBIЕсли механизм прямого подключения вычисляет его самостоятельно, у него нет этого времени
Время расчета памяти (мс)Время расчета для всех кодов FineBIНапример, вычисления в древовидном движке пагинации, квадратичные вычисления и т.д.
Время внешнего рендеринга (мс)Сумма времени вычислений, рендеринга и представления информации на внешнем js после завершения вычислений на внутреннем js.
Общее время выполнения запроса (мс)Общее время от момента нажатия пользователем на запрос до загрузки фронт-энда
Время начала запросаМомент времени, в который пользователь запускает тест производительности, вплоть до секунды

2.3 Просмотр подробной информации

Для уточнения причины проблемы производительности и дальнейших действий обратитесь к "Детальной информации" соответствующего запроса.

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

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

(3) Поля формы "Подробности" описаны в следующей таблице:

Имя столбца данныхинструкции
пользовательПользователи FineBI, которые запускают анализ производительности
Название ресурса уровня 1Когда содержанием анализа производительности являются данные: имя первичного ресурса - это имя набора данныхКогда содержимое анализа производительности является приборной панелью: имя ресурса первого уровня - это имя приборной панели
Название вторичного ресурсаКогда содержимым анализа производительности являются данные: имя вторичного ресурса - это имя шага анализа в наборе данныхКогда содержание анализа производительности является приборной панели: вторичное имя ресурса является имя компонента в приборной панели
Тип компонента1: Таблица группировки2 : Кросс-табуляция3 : Поломка4 : Диаграммы5 : Наборы данных для самопомощи6 : Управление фильтрами7 : Текстовый компонент
Идентификатор запросаUUID, уникальный номер для каждого запроса.
Этап реализации1) Ожидание начальной фазыПостановка в очередь перед запросом из-за ограничений браузера2) Подготовка запросов* Построение плана выполнения: этап, на котором движок FineBI разрабатывает, как организовать запрос, когда он получает запрос. * Генерация SQL и оптимизация SQL: этап, на котором соответствующий запрос преобразуется в SQL, а сам SQL оптимизируется. 3) Выполнение SQL* Создание соединения с данными: перед выполнением необходимо установить соединение с базой данных. * Выполнение SQL: время выполнения запроса к базе данных 4) Передача данныхВремя, необходимое для передачи результатов, полученных от базы данных, на BI-сервер5) Вычисления в памятиВремя, рассчитанное механизмом прямого соединения6) В ожидании концаОжидание конечной фазы (эти данные будут доступны, когда все компоненты прибора будут упакованы в один запрос), первый вышедший компонент должен дождаться времени ожидания последнего вышедшего компонента 7) Внешний рендеринг* Передача данных (BI-сервер - браузер пользователя): момент, когда BI-сервер передает данные браузеру пользователя. * внешний рендеринг
Идентификатор клипаДля одного запроса может быть несколько запросов. Например, создание соединения с данными, выполнение SQL и передача данных могут быть разделены на несколько запросов, которые необходимо рассматривать отдельно.
Потребление времени (мс)Запишите прошедшее время этапа, если он имеет счетчик времени
Содержание клипаЗапишите имя соединения данных на этапе создания соединения данныхНа этапе выполнения SQL записывается выполненный SQL. Если SQL превышает 3w символов, в экспортируемом файле создаются два листа, содержащие подробную информацию и SQL, превышающий 3w символов.Если есть логика инъекции временных таблиц, то SQL-запрос будет предваряться словами: excel insert cost xxx | selcet * ..... идентификаторы, такие как
Возвращает количество строк в наборе результатовЗапишите количество строк в наборе результатов, возвращенных на этапе передачи данных, этапе вычисления в памяти и этапе внешнего рендеринга.
Возвращает количество столбцов в наборе результатовЗапишитеколичество столбцов в возвращаемом наборе результатовдля фазы передачи данных, фазы вычисления в памяти и фазы внешнего рендеринга.
Тип двигателя исполненияэкстракт (медицинский образец)прямое подключение
Время началаНачало "фазы внедрения"
время окончанияЗавершение этапа "фаза внедрения"
Информация об исключенияхВыводит сообщение об ошибке при возникновении ошибки на этапе
Всего запросовЗапишите сумму времени, затраченного на все этапы выполнения этого запросаЗапишите время начала и окончания выполнения этого запроса
ИтогоЗапишите суммувремени, затраченного на все этапы выполнения, для всех запросовЗаписывайте время начала и окончания всех запросов

2.4 Обратная связь по производительности

(1) После того как пользователи найдут проблемы с шаблоном, они могут нажать кнопку "Анализ производительности > Обратная связь", чтобы сообщить администратору о производительности шаблона. Как показано на рисунке ниже:

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

3. условия

3.1 Логика в деталях

Логика согласования и расчета для каждого временного периода в основной информации и каждого этапа выполнения в подробной информации приведена в таблице ниже:

Основная информацияпериод времениПодробная информацияЭтап реализацииинструкции
Время ожидания запросаОжидание начальной фазы**Примечания к определению:**Время от момента нажатия пользователем на запрос до момента готовности запроса, поскольку ограничения браузера приводят к постановке запроса в очередь до того, как он будет готовКак правило, если шесть браузеров отправляют запросы и не получают ответа, запросы седьмого и последующих браузеров блокируются.**Вычислительная****логика:**6.0.16 и более поздние версии: [(момент времени, когда запрос был возвращен - момент времени, когда запрос был запущен) - момент времени, затраченный внутренним запросом].6.0.15 и более ранние версии: серверное время начала StartTime (время сервера BI) в ответе, возвращаемом запросом, - время начала запроса (время браузера пользователя) (возможны случаи, когда время отрицательное из-за возможного несоответствия часовых поясов/времени браузера и сервера)**Указания по устранению аномалий:**1) Чрезмерный параллелизм запросов2) Превышение лимитов параллельности браузера
Этап подготовки запросаПостроение плана реализации**Примечания к определению:Этапы, на которых механизм FineBI Direct Connect строит организацию запроса при получении запросаЭтапы создания ETLFlow для набора данных Self-serviceВычислительная логика:Процесс генерации BIC-критериев или HyperCriteria для виджета.Процесс генерации ETLFlow из ETLContextУказания по устранению аномалий:**Наборы данных/шаблоны/компоненты слишком сложны
Генерация и оптимизация SQL**Примечания к определению:Этап, на котором соответствующий запрос преобразуется в SQL, а сам SQL оптимизируетсяВычислительная логика:**Время на создание и оптимизацию SQL
-Создание подключения к базе данных**Примечания к определению:**Перед выполнением SQL необходимо получить соединение с базой данных.**Вычислительная логика:**Время создания соединения с базой данных в DataBaseSouceEngine
Время выполнения запросаВыполнение SQL**Примечания к определению:Время выполнения запроса к базе данных иливремявыполнения механизма TCERIDВремя выполнения SQL может быть больше, чем в журналах, поскольку время выполнения включает время работы с временной таблицей.На этапе выполнения SQL записывается выполненный SQL. Если SQL превышает 3w символов, в экспортируемом файле создаются два листа, содержащие подробную информацию и SQL, превышающий 3w символов.Если есть логика инъекции временных таблиц, то SQL-запрос будет предваряться фразой excel insert cost xxx | selcet * .... или что-то в этом родеВычислительная логика:Время выполнения запросов к базе данных в DataBaseSouceEngineУказания по устранению аномалий:**1) Проблемы с производительностью базы данных2) Операторы SQL необходимо оптимизировать
время передачи данныхПередача данных (база данных-BI)**Примечания к определению:**время возврата результатов запроса к базе данных на сервер FineBI.**Вычислительная логика:**Длина передачи набора результатов запроса к базе данных на BI-сервер + длина сжатия данных / длина создания модели данныхБез этих двух компонентов время 0 является нормальным.Указания по устранению аномалий:(1) Если результат запроса базы данных передается на BI-сервер слишком долго, устраните проблему с сетью сервера.2) Если построение модели данных занимает слишком много времени, оптимизируйте логику анализа.
время вычислений в памятирасчёт памяти**Примечания к определению:Время расчетов двигателя прямого подключения для всего BI-кодаВычислительная логика:**Время вычислений в памяти для наборов данных Self-service отсутствует, а дашборд содержит следующие процессы:Время группировки: время после группировкиВремя вычислений при сортировке: сортировка дереваВремя расчета пагинации: группаВремя процедуры страницы.Время вычисления на основе сортировки: treeSortGistВремя расчета древовидного фильтра: groupTreeFilterВремя создания дерева: время treeMaker **Указания по устранению аномалий:**Набор результатов, возвращаемых запросом, слишком велик, и логика анализа нуждается в оптимизации
Время рендеринга на переднем планеПередача данных (BI-сервер - браузер пользователя)**Примечания к определению:Время, в течение которого сервер FineBI передает данные браузеру пользователяВычислительная логика:**Точка во времени, когда заканчивается работа back-end, - точка во времени, когда front-end получает данные
внешний рендеринг**Примечания к определению:**Сумма времени вычислений, рендеринга и представления информации на внешнем js после завершения вычислений на внутреннем js.**Вычислительная логика:Момент времени, когда компонент окончательно отображается - момент времени, когда фронт-энд получает данныеУказания по устранению аномалий:**Слишком большие строки пагинации
Общее время запроса-Общее время от момента нажатия пользователем на запрос до загрузки фронт-энда
Время начала запроса-Когда пользователь запускает тест производительности

3.2 Часто задаваемые вопросы

Описание проблемыАнализ причин
Кнопка "Экспорт сведений " выделена серым цветом, и экспорт невозможен.**Анализ причин :запрос выполняется, не удается экспортировать детали одновременноРешение:**Пожалуйста, дождитесь окончания запроса, и вы сможете экспортировать подробную информацию
Отрицательное время ожидания запросаАнализ причин :6.0.15 и более ранние версии, время ожидания запроса = время старта StartTime (время сервера BI) в ответе, возвращаемом запросом, - время старта запроса (время браузера пользователя)Отрицательное время существует из-за возможного несоответствия часовых поясов/времени браузера и сервера, что приводит к разнице в миллисекундахРешение: Пожалуйста, обновите проект до версии 6.0.16 и выше и оптимизируйте логику времени ожидания запроса.
Время выполнения запроса равно 0Причина анализа : запрос попал в кэш, а не в базу данных с новым номером выборки.Решение: Вы можете сначала изменить политику кэширования одной таблицы, а затем провести анализ производительности
Время выполнения запроса не совпадает со временем фонового журнала**Анализ причин 😗*Набор данных создается с помощью временной таблицы, и анализ производительности рассчитывает время выполнения временной таблицы, которое не учитывается в журналах бэкенда, поэтому эти два показателя несовместимы.**Решение:**Обычная ситуация, решение не требуется
Общее время запроса ≠ общее значение субпотребленияАнализ причин :Компонент может вызывать несколько SQL, причем несколько SQL не обязательно выполняются последовательно.Время выполнения запроса = сумма всех времен выполнения SQLВремя выполнения запроса в общем времени выполнения запроса = продолжительность времени от начала первого выполнения SQL до конца последнего выполнения SQLЭти два параметра не равны,поэтомуобщее время выполнения запроса может быть меньше, чем сумма времени выполнения элементовРешение: Нет
Несколько этапов генерации и оптимизации SQL в деталях одного запросаАнализ причин :Компонент может вызывать более одного SQLНапример, такие операции, как де-взвешивание, медиана, фиксированный и т. д., требуют отправки нескольких SQL, поскольку необходимо вычислить суммарное значение родительского узлаРешение: Обычная ситуация, решение не требуется