监视和优化本地数据网关性能
网关性能监视(公共预览版)
为了监视性能,网关管理员传统上依赖通过 Windows 性能监视器工具手动监视性能计数器。 现在我们另外提供查询日志记录和网关性能 PBI 模板文件来可视化结果。 此功能提供有关网关使用情况的新见解。 可以使用它来对低性能查询进行故障排除。
注意
此功能当前仅可用于标准模式下的本地数据网关。 它在个人模式下不可用。
注意
网关诊断不捕获与(虚拟)计算机及其网络直接相关的诊断,如带宽或延迟。 但是,这些诊断可能会影响网关性能。 可以使用资源监视工具来监视计算机。
性能日志记录
现在,此功能在默认情况下已打开。
注意
- 当前,此日志记录中有时会缺失从高级容量到网关的查询。 我们正在积极解决此问题。
- 当前,不使用此工具记录 Power BI 分页报表查询。
配置性能日志记录
配置文件 C:\Program Files\On-premises data gateway\Microsoft.PowerBI.DataMovement.Pipeline.GatewayCore.dll.config
中还有其他一些值,可以根据需要进行更新:
- ReportFilePath:确定存储 4 个日志文件的路径。 默认情况下,此路径为 \Users\PBIEgwService\AppData\Local\Microsoft\On-premises data gateway\Report 或 \Windows\ServiceProfiles\PBIEgwService\AppData\Local\Microsoft\On-premises data gateway\Report。 路径取决于 OS 版本。 如果为 PBIEgwService 以外的网关使用服务帐户,请用服务帐户名称替换路径的这一部分。
- ReportFileCount:确定要保留的每种日志文件的数量。 默认值为 10。
- ReportFileSizeInBytes:确定要维护的文件的大小。 默认值为 104,857,600。
- QueryExecutionAggregationTimeInMinutes:确定聚合查询执行信息的分钟数。 默认值为 5。
- SystemCounterAggregationTimeInMinutes:确定聚合系统计数器的分钟数。 默认值为 5。
对配置文件进行更改后,请重启网关,以使这些配置值生效。 现在,正在为 ReportFilePath 指定的位置生成报表文件。
注意
最多可能需要 10 分钟加上在配置文件中为 QueryExecutionAggregationTimeInMinutes 设置的时间,文件会开始显示在文件夹中。
了解性能日志
启用此功能时,会创建 4 个新的日志文件:
- 查询执行报表
- 查询开始报表
- 查询执行聚合报表
- 系统计数器聚合报表
查询执行报表包含详细的查询执行信息。 捕获以下属性。
属性 | 说明 |
---|---|
GatewayObjectId | 网关的唯一标识符。 |
RequestId | 网关请求的唯一标识符。 此标识符对于多个查询可能是相同的。 |
DataSource | 包含数据源类型和数据源。 |
QueryTrackingId | 查询的唯一标识符。 但是,如果查询失败并重试,可能重复。 |
QueryExecutionEndTimeUTC | 查询执行完成的时间。 |
QueryExecutionDuration(毫秒) | 查询执行的持续时间。 |
QueryType | 查询类型。 例如,传递的查询可能是 Power BI 刷新或 DirectQuery。 或者,它可能是来自 Power Apps 和 Power Automate 的查询。 |
DataProcessingEndTimeUTC | 假脱机、数据检索、压缩和数据处理等数据处理活动完成的时间。 |
DataProcessingDuration(毫秒) | 假脱机、数据检索、压缩和数据处理等数据处理活动的持续时间。 |
成功 | 指示查询是成功还是失败。 |
ErrorMessage | 如果查询失败,指示错误消息。 |
SpoolingDiskWritingDuration(毫秒) | 指示网关将所有数据写入磁盘的时间量 |
SpoolingDiskReadingDuration(毫秒) | 指示网关将所有数据读取到磁盘的时间量 |
SpoolingTotalDataSize(字节) | 从磁盘写入/读取的数据的大小(压缩) |
DataReadingAndSerializationDuration(毫秒) | 指示网关从数据源读取数据并将其序列化为数据包所用的时间。 |
DiskRead(字节/秒) | 指示网关每秒读取的字节数。 DiskRead(byte/sec) = SpoolingTotalDataSize / SpoolingDiskReadingDuration |
DiskWrite(字节/秒) | 指示网关每秒写入的字节数。 DiskWrite(byte/sec) = SpoolingTotalDataSize / SpoolingDiskWritingDuration |
查询开始报表包含查询和查询开始时间。 捕获以下属性。
属性 | 说明 |
---|---|
GatewayObjectId | 网关的唯一标识符。 |
RequestId | 网关请求的唯一标识符。 此标识符对于多个查询可能是相同的。 |
DataSource | 包含数据源类型和数据源。 |
QueryTrackingId | 查询的唯一标识符。 但是,如果查询失败并重试,可能重复。 |
QueryExecutionStartTimeUTC | 查询执行开始的时间。 |
QueryType | 查询类型。 例如,传递的查询可能是 Power BI 刷新或 DirectQuery。 或者,它可能是来自 Power Apps 和 Power Automate 的查询。 |
QueryText | 使用 Base64 编码的完整查询。 |
EvaluationContext | 包含 artifactId(即,语义模型的 datasetid、dataflowsId 等)和其他跟踪 ID(由项目决定)。 请注意,此字段仅针对 Fabric、Power Platform、Azure Analysis Services 和 Azure 逻辑应用中的某些连接器中支持的工作负载进行填充。 其中包括:语义模型、数据流 Gen2 和 Power Platform 数据流。 它还包括用于糅合查询、HTTP 和文件 Azure 连接器的 Azure 逻辑应用工作负载。 该值将包含不同的跟踪 ID,具体取决于所使用的工作负载。 不支持 Power BI、Fabric 数据流第 1 代和 Power BI 分页报表。 |
查询执行聚合报表包含按 GatewayObjectId、DataSource、Success 和 QueryType 聚合到某个时间间隔的查询信息。 默认值为 5 分钟,不过可以对其进行调整。 捕获以下属性。
属性 | 说明 |
---|---|
GatewayObjectId | 网关的唯一标识符。 |
AggregationStartTimeUTC | 聚合查询属性的时间窗口的开始时间。 |
AggregationEndTimeUTC | 聚合查询属性的时间窗口的结束时间。 |
DataSource | 包含数据源类型和数据源。 |
成功 | 指示查询是成功还是失败。 |
AverageQueryExecutionDuration(毫秒) | 聚合时间窗口的平均查询执行时间。 |
MaxQueryExecutionDuration(毫秒) | 聚合时间窗口的最长查询执行时间。 |
MinQueryExecutionDuration(毫秒) | 聚合时间窗口的最短查询执行时间。 |
QueryType | 查询类型。 例如,传递的查询可能是 Power BI 刷新或 DirectQuery。 或者,它可能是来自 Power Apps 和 Power Automate 的查询。 |
AverageDataProcessingDuration(毫秒) | 聚合时间窗口内假脱机、数据检索、压缩和数据处理等数据处理活动的平均时间。 |
MaxDataProcessingDuration(毫秒) | 聚合时间窗口内假脱机、数据检索、压缩和数据处理等数据处理活动的最长时间。 |
MinDataProcessingDuration(毫秒) | 聚合时间窗口内假脱机、数据检索、压缩和数据处理等数据处理活动的最短时间。 |
计数 | 查询数。 |
系统计数器聚合报表包含聚合到某个时间间隔的系统计数器值。 默认值为 5 分钟,不过可以对其进行调整。 捕获以下属性。
属性 | 说明 |
---|---|
GatewayObjectId | 网关的唯一标识符。 |
AggregationStartTimeUTC | 已聚合的系统计数器的时间窗口的开始时间。 |
AggregationEndTimeUTC | 已聚合的系统计数器的时间窗口的结束时间。 |
CounterName | 每个系统计数器应用于一个托管网关节点的服务器,其中包括: • SystemCPUPercent:服务器上已用的 CPU 占可用 CPU 总数的百分比。 • SystemMEMUsedPercent:服务器上已用的内存占可用内存总数的百分比。 • GatewayCPUPercent:每个核心上网关进程使用的 CPU 的百分比总和。 要获取服务器上已用的 CPU 的百分比,请将 GatewayCPUPercent 除以核心数。 • GatewayMEMKb:网关进程使用的内存综合(以 KB 为单位)。 |
最大 | 聚合时间窗口内系统计数器的最大值。 |
最小 | 聚合时间窗口内系统计数器的最小值。 |
平均值 | 聚合时间窗口内系统计数器的平均值。 |
可视化网关性能
现在,可以可视化日志文件中的数据。
下载网关性能 PBI 模板,然后使用 Power BI Desktop 将其打开。
在打开的对话框中,检查文件夹路径是否与 ReportFilePath 中的值匹配。
选择“加载”,模板文件将开始从日志文件加载数据。 所有视觉对象都将使用报表中的数据填充。
(可选)将此文件另存为 PBIX,然后发布到服务以自动刷新。 若要了解详细信息,请转到从 Power BI Desktop 发布语义模型和报表。
还可以根据需要自定义此模板文件。 有关 Power BI 模板的详细信息,请转到这篇 Microsoft Power BI 博客文章。
监视 spool 存储
默认情况下,网关的 spool 存储位于 C:\Users\PBIEgwService\AppData\Local\Microsoft\On-premises data gateway\Spooler。 确保监视此位置以确保有足够的可用磁盘空间。 详细信息:网关假脱机数据
低性能查询
长时间运行的查询可能需要对数据源进行其他修改或对查询本身进行进一步优化。 这可能包括 Power BI 刷新或直接数据库查询(如 Power BI DirectQuery、Power Apps 或 Azure 逻辑应用)。
默认情况下,网关执行基本日志记录。 如果你要调查性能低下的查询,除了使用性能监视功能之外,还可以暂时启用“其他日志记录”来收集其他日志信息,包括 mashup 引擎日志、查询字符串和详细级别的跟踪。 这些日志将写入到与普通网关日志相同的位置。 为此,请在本地数据网关应用中选择“诊断”>“其他日志记录”。
根据网关使用情况,启用此设置可能会显著增加日志大小。 建议在查看完日志后禁用其他日志记录。 不建议在网关正常使用期间将此设置保持为启用状态。
通过流式处理数据优化性能
默认情况下,本地数据网关会在将数据返回到语义模型之前对数据进行假脱机处理,这可能会导致数据加载和刷新操作期间的性能降低。 可以覆盖默认行为。
在 C:\Program Files\On-Premises data gateway\Microsoft.PowerBI.DataMovement.Pipeline.GatewayCore.dll.config 文件中,将 StreamBeforeRequestCompletes 设置为 True,然后保存。
<setting name="StreamBeforeRequestCompletes" serializeAs="String"> <value>True</value> </setting>
在“本地数据网关”>“服务设置”中,重启网关。
注意
当使用慢速数据源或网络连接不稳定/受限时,启用 StreamBeforeRequestCompletes 可能会导致查询可靠性问题。
通过从防病毒扫描中排除特定文件夹来优化性能
为了避免潜在的性能影响,在安装了本地数据网关的服务器中使用文件级防病毒软件时,可将某些文件夹排除在防病毒扫描之外。 如果未排除这些文件夹,可能会观察到性能影响和其他意外行为,因为这些文件夹会收到大量写入操作,而且它们本质上是本地数据网关的数据管道。
可能必须从本地数据网关服务器中的防病毒扫描中排除的文件夹
注意
下面的占位符 Drive 表示安装本地数据网关的驱动器的字母。 通常,驱动程序字母为 C。下面的占位符 ServiceAccount 表示运行本地数据网关的服务帐户。 默认帐户为 PBIEgwService。
- 日志记录目录:Drive:\Windows\ServiceProfiles\ ServiceAccount \AppData\Local\Microsoft\On-premises data gateway
- Spool 存储目录:Drive:\Windows\ServiceProfiles\ ServiceAccount \AppData\Local\Microsoft\On-premises data gateway\Spooler