当前位置: 首页 > news >正文

精品丨PowerBI负载测试和容量规划

当选择Power BI作为业务报表平台时,如何判断许可证的选择是否符合业务需求,价格占了主导因素。
Power BI的定价是基于SKU和服务器内核决定的,但是很多IT的负责人都不确定自己公司业务具体需要多少。
不幸的是,Power BI的容量和预期使用量的比率很难进行量化的评估。

注:本文非原创,是搬运过来的,原文链接[1]在文章末尾。

例如:

一家公司可能有一个非常大的数据模型,需要占用大量的内存和CPU来进行长时间的刷新,高峰期有20个用户,每小时刷新一次,查询都非常简单,并且允许查询折叠。

另一家企业可能有6个较小的数据模型,高峰期有950个用户,每天刷新,数据模型的查询都非常非常复杂。这些相关元素都会影响后台资源的使用情况,使得预测总体资源并作为许可证选择的依据这件事变得几乎是不可能的。

值得庆幸的是,内存负载测试可以给我们提供一个良好的参照依据。
本文将介绍如何对你的内存进行负载测试、负载测试的规划要素以及如何理解负载测试的结果。

先决条件

  • 具备权限,可以访问Premium容量利用率和指标应用程序/报表 (利用率和指标报表[2])

  • 具备权限,可以访问你想测试的报表

  • PC需要足够的CPU和内存来运行并发测试时的多浏览器窗口

  • 足够的权限来运行PowerShell(即以管理员身份运行)

  • 负载测试工具[3](说明在后面)

搭建&测试

  1. 导航到负载测试工具的GitHub[4],下载包含PowerShell脚本的zip文件。负载测试工具有两个选项,默认测试 “最坏的情况”,即所有用户同时登录,并不断点击过滤器,从而迫使Power BI忽略其缓存。
    现实加载测试工具[5]的操作类似于默认加载测试工具,但它测试的不是初始加载时间,而是最终用户可能会使用的可编程功能,如更改切片器、筛选器和浏览书签,并在操作之间留出一些 “思考时间”。
    在本演示中,我们将使用标准负载测试工具,以保持简单。
    有关使用实际负载测试工具的进一步说明,请参阅 ReadMe 文件。

    注意:
    此PowerShell脚本包含一个未签名的PowerShell脚本。必须首先使用Set-ExecutionPolicy Unrestricted命令才能允许运行未签名脚本。
    它还要求从此处安装[6] “MicrosoftPowerBIMgmt” Power BI PowerShell模块。

  1. 将文件解压缩到桌面(或虚拟机)上的文件夹中,然后导航到Initiate_Load.ps1文件。
    右键单击该文件,在PowerShell中运行。

  1. PowerShell脚本将引导你完成一些提示设置:
  • 你想配置多少个报表?这个会影响并发ping报表的数量。

    • 请记住,你可以在相同的PowerShell窗口中ping不同工作区的报表。输入一个数字,然后回车。
  • 身份验证

    • 会弹出一个登录窗口,需要登录并且访问你想要测试的工作区
  • 从列表选择工作区索引

    • 在需要进行负载测试的报表所在的工作区旁边输入数字,然后回车。
  • 从列表选择报表索引

    • 在需要进行负载测试的报表旁边输入数字,然后回车。
  • 过滤需要的过滤表、过滤列、过滤列中的最小值和最大值

    • 这是脚本绕过Power BI服务器中缓存特性的方式。通过提供表、列、最小值和最大值,脚本能够将不同的过滤上下文传递加载报表。
    • 建议使用与整个数据模型交互的日期表或事实表,并使用数字字段(最小值和最大值对文本字段没有意义)
    • 确保变量和逗号之间没有空格。

    例如:
    我有一张名为“Invoice Date”的表,存在名为“MonthsAgo”的列,我想对其进行过滤,则输入“InvoiceDate.MonthsAgo,0,4”。

  • 输入要为此报表启动的实例数

    • 这是当ping报表时,打开浏览器窗口的数量。输入一个数字,然后回车。
    • 建议从10开始,然后逐步升级测试,避免因为窗口数量太多造成电脑崩溃。
  • 要启动配置好的报表么?[y/n]

    • 如果上面的配置没有任何问题,那么输入“y”就可以了。
    • 如果需要终止测试的运行,那么输入“n”。
  1. 如果要测试数据集刷新是否会影响用户体验(反之亦然),请进入Power BI在线服务,并手动刷新正在进行负载测试报表的数据集。
    虽然负载测试工具适合测试交互操作,但是一些后台操作需要在工具外完成。
    有一些Rest Api[7]可以触发Power BI数据集刷新,本文不涉及这些。

  2. 如果浏览器窗口的数量超过了电脑的内存容量,则窗口会超时,需要单独刷新浏览器页面以使它们再次运行。

  • 建议一次只允许10个页面处于活动状态。
  • 注意在每个窗口的左上角有一个小提示。
  • 这个是提醒该窗口ping Power BI服务的次数。
  • 要停止每个窗口的ping,需要单独关闭每个窗口。
  • 所有的窗口将在初始脚本运行一小时后超时,因为API生成的令牌将在一小时后过期。

负载测试到现在已经完成!需要等待大约45分钟。然后手动刷新容量和指标报表的数据集。

容量规划注意事项

Power BI容量规划和管理是一项艰巨的任务。

微软建议根据Power BI项目(数据集、数据流等)的大小来设置容量大小,因为这个直接影响SKU内的操作速度(提前规划容量[8])。

这是一个很好的建议,但不幸的是,这种方法不适合数据总量小且交互频率非常高的项目。

例如:
假设有一个经过认证的数据集和八个使用该数据集的报表。
每个报表都有20-30人观看,因为现在是月底,所有的分析师、客户经理和高管都在用这些报表的截图准备他们的汇报。
这时候此数据集(以及容量)的负载就像有160-240个用户与数据集交互一样。
现在把它放大——如果有100个人在看每份报表。
针对此数据集/项目的使用会成倍增长,因此经过优化的认证数据集对CPU的压力要比只有一个报表的数据集大得多。
这就是为什么在评估最佳SKU/CPU的时候,必须同时考虑后台操作和交互操作的原因。

Power BI中的容量由以下几个变量决定:

  • 使用的数据模型的模式和大小(后台和交互操作)
  • 所需查询的数量和复杂性(后台操作)
  • 应用程序每小时的使用情况(交互式操作)
  • 数据刷新频率和持续时间(后台操作)

值得庆幸的是,Gen2指标应用程序根据这些变量提供了对容量当前状态分析。

结果分析

Premium容量利用率和指标报表提供了前14天或28天的容量使用情况的可视化报表。
此报表与容量度量本身非常相似,可能非常复杂且难以理解。

微软已经提供了一些关于该报表内容的说明,不过回归到上面所做的负载测试结果相关。

在开始之前,请确保刷新了Premium容量利用率和指标报表的数据集(测试结束后需要等待45分钟,以确保测试结果数据进入到报表中)。

进入报表后,要将报表数据范围缩小到最新测试的日期,可以通过页面的过滤器窗格设置“所有页面过滤”,日期过滤到测试的日期。

如果进行了多轮测试,那么通过此报表可以了解每个测试节点的更多信息。

总览页面右上角的图表对于了解在测试过程中是否有测试导致CPU峰值超过了限制非常有效。

例如:
进了3次测试,但是只有一次导致CPU峰值达到了168%,要了解具体的细节,可以通过Power BI的钻取功能下钻到细节中去查看。

这是报表中我最喜欢的部分。在这个页面中,可以看到在过去24小时内,除了所有后台操作之外,每隔30秒内发生的交互操作的数量。

在评估可用容量负载时,了解当前SKU的限制非常重要。

在示例中,分配的SKU是A1,它允许30s的CPU容量,了解了这个之后,来看看611个交互操作造成了多少秒的CPU时间。

50.6秒,导致容量使用达到了169.98%。

因为使用了负载测试工具,所以所有这些交互的操作都代表Power BI用户。

但是在生产环境中,需要判断30s的CPU容量允许多少个用户与报表进行交互过滤。

值得庆幸的是,这种高强度的交互并没有影响报表的加载,也没有造成服务故障,不过如果想一直保持良好的运行状况,可以根据情况扩展容量。

在示例中,后台交互(刷新数据模型)在过去24小时内仅占容量的0.53%。

不过需要警惕的是,虽然CPU支持的秒数比交互操作要大得多,但是后台的一些操作也是包含在24小时内的框架下计算的。

如果一次测试多个数据集,建议按Artifact排序,然后按住shift键,且按CPU字段交叉排序。

这样,就可以判断一个数据集是否比另一个数据集消耗更多的资源(查看平均CPU秒数来判断)。

点击可视化视图右上角的三个点,可以将这些结果导出到excel或CSV中,以便进一步检查或将多个测试的结果堆叠起来并进行二次分析。

对于上面的示例,建议增加SKU以获得更多CPU,来容纳更多的用户,并保证用户可以进行大量的交互操作。

除此之外,还可以检查测试的数据模型,对接的数据源最好有折叠查询[9]和严谨的星型模型[10]来减轻CPU的压力。

引用链接

[1] 原文链接: https://dataonwheels.wordpress.com/2022/02/22/power-bi-embedded-stress-testing-capacity-planning/
[2] 利用率和指标报表: https://learn.microsoft.com/en-us/fabric/enterprise/metrics-app-install?tabs=1st
[3] 负载测试工具: https://github.com/microsoft/PowerBI-Tools-For-Capacities
[4] GitHub: https://github.com/microsoft/PowerBI-Tools-For-Capacities
[5] 测试工具: https://github.com/microsoft/PowerBI-Tools-For-Capacities/tree/master/RealisticLoadTestTool
[6] 此处安装: https://learn.microsoft.com/en-us/powershell/power-bi/overview?view=powerbi-ps
[7] Rest Api: https://learn.microsoft.com/en-us/rest/api/power-bi/datasets/refresh-dataset
[8] 提前规划容量: https://learn.microsoft.com/en-us/power-bi/enterprise/service-premium-capacity-manage
[9] 折叠查询: https://learn.microsoft.com/en-us/power-query/query-folding-basics
[10] 星型模型: https://learn.microsoft.com/en-us/power-bi/guidance/star-schema

相关文章:

精品丨PowerBI负载测试和容量规划

当选择Power BI作为业务报表平台时,如何判断许可证的选择是否符合业务需求,价格占了主导因素。 Power BI的定价是基于SKU和服务器内核决定的,但是很多IT的负责人都不确定自己公司业务具体需要多少。 不幸的是,Power BI的容量和预期…...

【算法-PID】

算法-PID ■ PID■ 闭环原理■ PID 控制流程■ PID 比例环节(Proportion)■ PID 积分环节(Integral)■ PID 微分环节(Differential) ■ 位置式PID,增量式PID介绍■ 位置式 PID 公式■ 增量式 PI…...

ros rosbag使用记录

rosbag: 1. rosbag record -a 记录当前所有消息(较少用)2. rosbag record -O bag_name.bag /topic 记录指定消息3. rosbag info 查阅bag文件信息4. rosbag play 播放bag文件内容5. python script 查看bag文件内容参考: 1. rosbag record -a 记…...

WebKit结构揭秘:探秘网页渲染的魔法之源

一、WebKit之心:渲染引擎的魔力 WebKit的渲染引擎是其核心所在,它犹如一位技艺高超的魔法师,将HTML、CSS和JavaScript的魔法咒语转化为绚丽的网页画面。它解析代码,绘制页面,让网页内容跃然屏上,展现出无尽…...

VSCode美化

今天有空收拾了一下VSCode,页面如下,个人觉得还是挺好看的~~ 1. 主题 Noctis 色彩较多,有种繁杂美。 我使用的是浅色主题的一款Noctis Hibernus 2. 字体 Maple Mono 官网:Maple-Font 我只安装了下图两个字体,使…...

Runes 生态一周要览 ▣ 2024.3.25-3.31|Runes 协议更新 BTC 减半在即

Runes 生态大事摘要 1、Casey 发布了 Runes 协议文档 RUNES HAVE DOCS,Github 代码库更新到 ord 0.17.0 版本,Casey 表示符文是一个“严肃”的代币协议。 2、Casey 公布了第一个硬编码的创世符文「UNCOMMONGOODS」 3、4月7日香港沙龙|聚焦「…...

瘦身Spring Boot应用(thinJar)

瘦身Spring Boot应用(thinJar) 简介 我们使用Spring Boot提供的spring-boot-maven-plugin打包Spring Boot应用,可以直接获得一个完整的可运行的jar包,把它上传到服务器上再运行就极其方便。 但是这种方式也不是没有缺点。最大的缺点就是包太大了&…...

备战蓝桥杯---贪心刷题1

话不多说&#xff0c;直接看题&#xff1a; 本质是一个数学题&#xff1a; 我们令xi<0表示反方向传递&#xff0c;易得我们就是求每一个xi的绝对值之和min,我们令平均值为a爸。 易得约束条件&#xff1a; x1-x2a1-a,x2-x3a2-a..... 解得x1x1-0,x2x1-((n-1)*a-a2-...an)。…...

《数据结构学习笔记---第九篇》---循环队列的实现

文章目录 1.循环队列的定义 2.循环队列的判空判满 3.创建队列并初始化 4.入队和出队 5. 返回队尾队首元素 6.释放循环队列 1.循环队列的定义 定义&#xff1a;存储队列元素的表从逻辑上被视为一个环。 我们此次实现的循环队列&#xff0c;采用顺序表 typedef struct {int…...

前端调试工具之Chrome Elements、Network、Sources、TimeLine调试

常用的调试工具有Chrome浏览器的调试工具&#xff0c;火狐浏览器的Firebug插件调试工具&#xff0c;IE的开发人员工具等。它们的功能与使用方法大致相似。Chrome浏览器简洁快速&#xff0c;功能强大这里主要介绍Chrome浏览器的调试工具。 打开 Google Chrome 浏览器&#xff0c…...

vue 加 websocket 聊天

<template><div style="height: 100%; width: 100%; background-color: #fff"><div class="wrap"><!-- 头部 --><div class="titleBox"><imgsrc="@/assets/image/avatar.png"style="argin: 10p…...

uniapp通过蓝牙传输数据 (ios)

在uni-app中&#xff0c;可以通过uni-ble&#xff08;uni-app官方提供的蓝牙插件&#xff09;来实现iOS设备上的蓝牙数据传输。 首先&#xff0c;确保已在uni-app的manifest.json文件中添加uni-ble插件的配置&#xff1a; "permission": { "scope.userLocati…...

docker搭建CI/CD环境配置过程中的常见问题

一、Jenkins 1、pull镜像问题 docker pull jenkins/jenkins:lts Using default tag: latest Trying to pull repository docker.io/library/centos ... Get https://registry-1.docker.io/v2/library/centos/manifests/latest: Get https://auth.docker.io/token?scoperepo…...

实验四 微信小程序智能手机互联网程序设计(微信程序方向)实验报告

请编写一个用户登录界面&#xff0c;提示输入用户名和密码进行登录&#xff1b; 代码 index.wxml <view class"user"> <form bindreset""> <view>用户名&#xff1a;</view><input type"text"name""/>…...

WPF —— 关键帧动画

wpf动画类型 1<类型>Animation这些动画称为from/to/by动画或者叫基本动画&#xff0c;他们会在起始值或者结束值进行动画处理&#xff0c;常用的例如 <DoubleAnimation> 2 <类型>AnimationUsingKeyFrames: 关键帧动画&#xff0c;功能要比from/to这些动画功…...

Taro + vue3 小程序封装标题组件

分为没有跳转页面的title组件和 有跳转页面的title组件 我们可以把这个封装成一个组件 直接上代码 <template><div class"fixed-title-container"><div class"box"><div class"icon" v-if"isShow" click"…...

babyAGI(6)-babyCoder源码阅读2任务描述部分

废话不多说&#xff0c;我们直接看task的prompt 这里需要注意的是&#xff0c;每个openai_call的temperature都不相同&#xff0c;这也是开发程序时需要调整和关注的一点 1. 初始化代码任务agent 作为babycoder的第一个angent&#xff0c;整个prompt编写的十分值得学习 整个p…...

生成式语言模型预训练阶段验证方式与微调阶段验证方式

生成式语言模型&#xff0c;如GPT-3、BERT等&#xff0c;在预训练和微调阶段都需要进行验证以确保模型性能。下面分别介绍这两个阶段的验证方式&#xff1a; 预训练阶段的验证&#xff1a; 预训练阶段通常使用大量未标注的文本数据来训练模型&#xff0c;以学习语言的一般特性。…...

flink on yarn

前言 Apache Flink&#xff0c;作为大数据处理领域的璀璨明星&#xff0c;以其独特的流处理和批处理一体化模型&#xff0c;成为众多企业和开发者的首选。它不仅能够在处理无界数据流时展现出卓越的实时性能&#xff0c;还能在有界数据批处理上达到高效稳定的效果。本文将简要…...

用TOMCAT部署web项目教程

文章目录 引言I 使用webapps文件夹II 利用server.xmlIII 自定义配置文件IV 预备知识4.1项目的一般结构4.2 contex标签4.3 IDE部署4.4 配置Tomcat服务引言 在开发阶段,一般使用IDE如MyEclipse来部署web项目,不要忘记手动部署的三种方式。 I 使用webapps文件夹 将项目文件夹…...

bash例子-source进程替换、alias不生效处理

#1. source 例子&#xff0c; 进程替换source <(echo alias zls"ls") #上一行 中 echo替换为cat&#xff0c;则得到如下行, 好处是 cat不用处理引号转义问题&#xff0c;而echo则必须处理引号转义问题#写一段复杂脚本&#xff0c;且 不处理引号转义问题 &#x…...

rabbitmq死信交换机,死信队列使用

背景 对于核心业务需要保证消息必须正常消费&#xff0c;就必须考虑消费失败的场景&#xff0c;rabbitmq提供了以下三种消费失败处理机制 直接reject&#xff0c;丢弃消息&#xff08;默认&#xff09;返回nack&#xff0c;消息重新入队列将失败消息投递到指定的交换机 对于核…...

gitlab备份与恢复

1.1.1 查看系统版本和软件版本 cat /etc/debian_version cat /opt/gitlab/embedded/service/gitlab-rails/VERSION 1.1.2 数据备份 打开/etc/gitlab/gitlab.rb配置文件&#xff0c;查看一个和备份相关的配置项 sudo vim /etc/gitlab/gitlab.rb gitlab_rails[backup_path] &q…...

HBase详解(1)

HBase 简介 概述 HBase是Yahoo!公司开发的后来贡献给了Apache的一套开源的、分布式的、可扩展的、基于Hadoop的非关系型数据库(Non-Relational Database)&#xff0c;因此HBase并不支持SQL(几乎所有的非关系型数据库都不支持SQL)&#xff0c;而是提供了一套单独的命令和API操…...

深入理解数据结构第二弹——二叉树(2)——堆排序及其时间复杂度

看这篇前请先把我上一篇了解一下&#xff1a;深入理解数据结构第一弹——二叉树&#xff08;1&#xff09;——堆-CSDN博客 前言&#xff1a; 相信很多学习数据结构的人&#xff0c;都会遇到一种情况&#xff0c;就是明明最一开始学习就学习了时间复杂度&#xff0c;但是在后期…...

视频汇聚/安防监控/EasyCVR平台播放器EasyPlayer更新:新增【性能面板】

视频汇聚/安防监控/视频存储平台EasyCVR基于云边端架构&#xff0c;可以在复杂的网络环境中快速、灵活部署&#xff0c;平台视频能力丰富&#xff0c;可以提供实时远程视频监控、视频录像、录像回放与存储、告警、语音对讲、云台控制、平台级联、磁盘阵列存储、视频集中存储、云…...

【教程】Flutter 应用混淆

在移动应用开发中&#xff0c;保护应用代码安全至关重要。Flutter 提供了简单易用的混淆工具&#xff0c;帮助开发者在构建 release 版本应用时有效保护代码。本文将介绍如何在 Flutter 应用中使用混淆&#xff0c;并提供了相关的操作步骤和注意事项。 &#x1f4dd; 摘要 本…...

STM32中C编程引入C++程序

C具备类的创建思想很实用于实际场景多相似性的框架搭建&#xff1b;同种类型或相似类型的C的优势明显因此进行相互嵌套使用 需要在C中使用C类的话&#xff0c;你可以通过C的“extern "C"”语法来实现。这允许你在C代码中使用C的链接方式&#xff0c;而在C代码中使用…...

MySQL DBA 需要了解一下 InnoDB Online DDL 算法更新

在 MySQL 8.0.12 中&#xff0c;我们引入了一种新的 DDL 算法&#xff0c;该算法在更改表的定义时不会阻塞表。第一个即时操作是在表格末尾添加一列&#xff0c;这是来自腾讯游戏的贡献。 然后在 MySQL 8.0.29 中&#xff0c;我们添加了在表中任意位置添加&#xff08;或删除&…...

多态--下

文章目录 概念多态如何实现的指向谁调谁&#xff1f;例子分析 含有虚函数类的大小是多少&#xff1f;虚函数地址虚表地址多继承的子类的大小怎么计算&#xff1f;练习题虚函数和虚继承 概念 优先使用组合、而不是继承; 继承会破坏父类的封装、因为子类也可以调用到父类的函数;…...

wordpress怎么套模板/什么是关键词搜索

屏幕快照 2016-09-22 12.00.37.png选中CoreData再右边&#xff0c;有个language选项&#xff0c;选择你要的语言类型&#xff0c;然后再去点击 屏幕快照 2016-09-22 12.02.02.png上方Editor选中Create NSManageredObject Subclass就可以了。1&#xff0c;Swift中使用OC的类建立…...

百度seo优化技巧/seo网络推广报价

only-child :empty 元素内容为空 &#xff1a;not...

可以做网站的app/流量精灵app

CentOS 7官方下载地址&#xff1a;官方网站上&#xff0c;CentOS 7提供了三种ISO镜像文件的下载&#xff1a;DVD ISO、Everything ISO、Minimal ISO。以下针对各个版本的ISO镜像文件&#xff0c;进行一一说明&#xff1a;CentOS-7.0-x86_64-DVD-1503-01.iso 标准安…...

app制作和网站一样吗/搜索关键词查询

本文出自伯特的《LoulanPlan》&#xff0c;转载务必注明作者及出处。对于 Java 开发者而言&#xff0c;泛型是必须掌握的知识点。泛型本身并不复杂&#xff0c;但由于涉及的概念、用法较多&#xff0c;所以打算通过系列文章去讲解&#xff0c;旨在全面、通俗的介绍泛型及其使用…...

网站模板在线演示怎么做/网站seo哪里做的好

前两天家里的网断断续续&#xff0c;发现有人在用arp欺骗&#xff0c;其实真正碰到有人在攻击的几率不大&#xff0c;大部分原因都是有人在用win下的诸如“P2P终结者”这样的软件导致的。再怎么bs那人也是没有用的&#xff0c;问题还是要解决&#xff0c;win下倒是好办&#xf…...

有多少专门做兼职的网站/营销网络是啥意思

写在前面的话&#xff1a; AMD安装MAC是一件很蛋疼的事情&#xff0c; 我这里主要是面向需要学习苹果平台的开发的同学&#xff0c;不想浪费太多时间去折腾的同学可以参考我的做法。 我的建议是安装mac os x 10.6.3,对应的xcode版本是3.2.2 如果想升级到更高版本的话&#xff0…...