Оформление
Анализ производительности - FineReport Справка | Разработка отчетов | Отчеты | Учебные пособия
Анализ производительности
1. Обзор
1.1 Версия
| Версия FineBI | Функциональные изменения |
|---|---|
| 6.0 | 1) Полагаясь на встроенный плагин "FineBI Direct Connect Performance Analysis Plug-inПлагин не активирован по умолчанию и должен быть активирован вручнуюВерсия плагина следует за версией JAR и обновляется автоматически2) Поддерживать анализ производительности только при работе с данными в режиме реального времени |
| 6.0.16 | 1) Функциональные возможности больше не предоставляются плагином и интегрированы непосредственно в продукт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, поскольку необходимо вычислить суммарное значение родительского узлаРешение: Обычная ситуация, решение не требуется |




