精品丨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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/782556.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

54 npm run serve 和 npm run build 输出的关联和差异

前言 通常来说 我们开发的时候一般会用到的命令是 “npm run serve”, “npm run build” 前者会编译当前项目, 然后将编译之后的结果以 node 的形式启动一个服务, 暴露相关业务资源, 因此 我们可以通过 该服务访问到当前项目 后者是编译当前项目, 然后做一下最小化代码的优…

第六讲 B+树索引

1 B树大家庭 有一种称为 B 树的特定数据结构,人们还使用该术语来泛指一类平衡树数据结构: B-Tree (1971)BTree (1973)B*Tree (1977?)B link-Tree (1981)Bε-Tree (2003)Bw-Tree (2013) 2 B树 BTree 是一种自平衡【self-balance】、有序【ordered】的…

文生图大模型Stable Diffusion的前世今生!

1、引言 跨模态大模型是指能够在不同感官模态(如视觉、语言、音频等)之间进行信息转换的大规模语言模型。当前图文跨模态大模型主要有: 文生图大模型:如 Stable Diffusion系列、DALL-E系列、Imagen等 图文匹配大模型:如CLIP、Chinese CLIP、…

LeetCode Python - 84. 柱状图中最大的矩形

目录 题目描述解法方法一方法二 运行结果方法一方法二 题目描述 给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。 求在该柱状图中,能够勾勒出来的矩形的最大面积。 示例 1: 输入:heights …

pytorch常用的模块函数汇总(1)

目录 torch:核心库,包含张量操作、数学函数等基本功能 torch.nn:神经网络模块,包括各种层、损失函数和优化器等 torch.optim:优化算法模块,提供了各种优化器,如随机梯度下降 (SGD)、Adam、RMS…

手机投屏到windows11电脑

1 安装无线投影组件 2 电脑端打开允许其他设备投影的开关 3 手机找到投屏选项 4 手机搜索可用设备连接即可 这里的官方文档给的不太好,给了一些让人眼花撩乱的信息,以下是经过整合的有效信息

FL Studio21.2.3中文版软件新功能介绍及下载安装步骤教程

FL Studio21.2中文版的适用人群非常广泛,主要包括以下几类: FL Studio 21 Win-安装包下载如下: https://wm.makeding.com/iclk/?zoneid55981 FL Studio 21 Mac-安装包下载如下: https://wm.makeding.com/iclk/?zoneid55982 音乐制作人&#xff1a…

开发指南020-banner

<dependency><groupId>org.qlm</groupId><artifactId>qlm-common</artifactId><version>1.0-SNAPSHOT</version> </dependency> 以上组件封装了平台的banner&#xff0c;不做任何配置的话&#xff0c;将输出平台的banner 想修…

二维码门楼牌管理应用平台建设:三维白模数据建设的意义

文章目录 前言一、三维白模数据建设的意义二、二维码门楼牌管理系统的构建三、二维码门楼牌管理系统的优势四、面临的挑战与未来展望 前言 随着城市管理的精细化和智能化需求日益增强&#xff0c;二维码门楼牌管理应用平台的建设成为推动城市管理现代化的重要手段。本文将探讨…

第几个幸运数字(蓝桥杯)

文章目录 第几个幸运数字题目描述答案&#xff1a;1905生成法C代码代码详细注释代码思路解释 第几个幸运数字 题目描述 本题为填空题&#xff0c;只需要算出结果后&#xff0c;在代码中使用输出语句将所填结果输出即可。 到x星球旅行的游客都被发给一个整数&#xff0c;作为…

软考高级架构师:安全模型概念和例题

作者&#xff1a;明明如月学长&#xff0c; CSDN 博客专家&#xff0c;大厂高级 Java 工程师&#xff0c;《性能优化方法论》作者、《解锁大厂思维&#xff1a;剖析《阿里巴巴Java开发手册》》、《再学经典&#xff1a;《Effective Java》独家解析》专栏作者。 热门文章推荐&am…

软考高级架构师:信息安全保护等级

作者&#xff1a;明明如月学长&#xff0c; CSDN 博客专家&#xff0c;大厂高级 Java 工程师&#xff0c;《性能优化方法论》作者、《解锁大厂思维&#xff1a;剖析《阿里巴巴Java开发手册》》、《再学经典&#xff1a;《Effective Java》独家解析》专栏作者。 热门文章推荐&am…

Java接口实战:模拟咖啡制作、订购与消费完整流程(day14)

定义接口&#xff1a; // 咖啡制作接口 interface CoffeeMaker { Coffee makeCoffee(String type); } // 咖啡店接口 interface CoffeeShop { void orderCoffee(String type, CoffeeConsumer consumer); } // 咖啡消费者接口 interface CoffeeConsumer { void …

文章解读与仿真程序复现思路——电网技术EI\CSCD\北大核心《考虑新能源发电商租赁共享储能的电力市场博弈分析》

本专栏栏目提供文章与程序复现思路&#xff0c;具体已有的论文与论文源程序可翻阅本博主免费的专栏栏目《论文与完整程序》 论文与完整源程序_电网论文源程序的博客-CSDN博客https://blog.csdn.net/liang674027206/category_12531414.html 电网论文源程序-CSDN博客电网论文源…

解决前后端通信跨域问题

因为浏览器具有同源策略的效应。 同源策略是一个重要的网络安全机制&#xff0c;用于Web浏览器中&#xff0c;以防止一个网页文档或脚本来自一个源&#xff08;域、协议和端口&#xff09;&#xff0c;获取另一个源的数据。同源策略的目的是保护用户的隐私和安全&#xff0c;防…

java数组与集合框架(三)--Map,Hashtable,HashMap,LinkedHashMap,TreeMap

Map集合&#xff1a; Map接口: 基于 键&#xff08;key&#xff09;/值&#xff08;value&#xff09;映射 Map接口概述 Map与Collection并列存在。用于保存具有映射关系的数据:key-value Map 中的key 和value 都可以是任何引用类型的数据Map 中的key 用Set来存放&#xff0…

stitcher类实现多图自动拼接

效果展示 第一组&#xff1a; 第二组&#xff1a; 第三组&#xff1a; 第四组&#xff1a; 运行代码 import os import sys import cv2 import numpy as npdef Stitch(imgs,savePath): stitcher cv2.Stitcher.create(cv2.Stitcher_PANORAMA)(result, pano) stitcher.st…

【每日跟读】常用英语500句(400~500)

【每日跟读】常用英语500句 Where can I buy a ticket? 在哪里能买到票&#xff1f; When is the next train? 下趟火车什么时候到&#xff1f; Thank you so much for helping me move yesterday. 非常感谢你昨天帮我搬家 I’m feeling a little under the weather toda…

Vue + .NetCore前后端分离,不一样的快速发开框架

摘要&#xff1a; 随着前端技术的快速发展&#xff0c;Vue.NetCore框架已成为前后端分离开发中的热门选择。本文将深入探讨Vue.NetCore前后端分离的快速开发框架&#xff0c;以及它如何助力开发人员提高效率、降低开发复杂度。文章将从基础功能、核心优势、适用范围、依赖环境等…

[linux] AttributeError: module ‘transformer_engine‘ has no attribute ‘pytorch‘

[BUG] AttributeError: module transformer_engine has no attribute pytorch Issue #696 NVIDIA/Megatron-LM GitHub 其中这个答案并没有解决我的问题&#xff1a; import flash_attn_2_cuda as flash_attn_cuda Traceback (most recent call last): File "<stdi…