性能监控,是数据平台面向开发、实施提供的用来对报表、数据模型执行过程进行性能分析、问题定位的工具。性能监控把整个执行过程以树形进行展现,并且输出每一步的关键信息。
性能监控既能监控后台还能监控前台,语义模型主要在后台执行,所以对于语义模型问题,只需要关注后台监控即可。
下面我们分步骤来介绍如何通过性能监控来定位语义模型问题。
性能监控位置
有两种方式来打开性能监控:
语义模型节点 - “工具”菜单;
数据服务管理
-
“性能监控”节点。
启用后台监控
监控前必须先启用监控,
在“后台集群性能日志”视图中,勾选“启用性能监控”,把“超出以下时间开始记录”设置为 0 ,再点击“确定”按钮。这样所有数据平台的模型执行都会记录下性能日志。
执行语义模型或报表
到语义模型节点,选中语义模型,点击“执行”菜单项。
或者 执行下报表。
刷新性能监控
切换到性能监控界面,在“后台集群性能日志”视图中点击右上角的“刷新”按钮。
这样就能看到刚才执行的语义模型日志。
联查详细性能堆栈
在“后台集群性能日志”视图中会列出记录的所有日志,如果某条执行报错,则会在“标题”列以“ [ERROR] ”开头进行标示。
同时会显示执行耗时、时间、线程、主机等信息。
如果为 [ERROR] 标示,点击右键,
点击“查看详细信息”会在右下角视图中展示异常信息。
双击该条记录,会在右下角视图中显示执行堆栈树。
查找详细报错信息
如上图所示,出异常的步骤会以红色显示,便于快速查找出错信息。
查看处理流程以及每一步的 sql 变化
该堆栈树是以时间排列。语义模型执行过程大致分为两步:生成 sql ,执行 sql 。
如上图所示,
DefaultExecStrategy.provideSQL 既是生成 sql 的步骤;
SmartService.fetchDataSet(DataSetRequest) 既是执行 sql 的步骤。
在 DefaultExecStrategy.provideSQL 步骤中,又进一步分为描述器处理、规则处理两部分。
以 Descriptor 结尾的既是描述器步骤,一般为过滤、排序、分组统计、分页、限制列、限制行 等处理;
以 Rule 结尾的既是规则处理步骤,一般为参数、宏变量、语义关联表达式、语义函数、 NC 特性规则、展平规则、优化、自定义规则等。
单击上述每一项,都会在下方输出当前步骤的 sql 状态。
查找最终执行 sql
单击 SmartService.fetchDataSet(DataSetRequest) 步骤,下方显示的既是最终执行的 sql 语句。