1. 概述 1.1 功能简介 用户在制作报告时,系统会对报表性能进行静态检测,告知用户哪些地方会影响报表展示并给出合理的建议。 报表性能检测原因分为三类,包括系统原因、报表原因和数据集原因,下面会分别详细介绍。 1.2 应用场景 告知制作报告的人,哪些信息可能会影响报告的性能。 2. 操作步骤 1)功能入口:当报告存在性能问题时,报告菜单栏上的“性能帮助”上会出现小红点提醒,用户可以点击【性能帮助 > 检测性能】查看具体原因和建议,并可以点击“检测性能”中的“下载”将所有性能慢的原因以Excel格式导出,如下图所示: 2)根据检测原因,按情况调整,例如第一步中的提交可以调整为“批量提交”,当用户将检测性能中列出的所有问题按给出的建议全部解决后,红点就会消失。 ➢说明: 报表性能检测只在用户制作报告时提示,在预览报告时不会提示。 3.相关参数配置 •性能检测频率 报表性能检测频率可以通过【系统设置 > 系统参数配置 > 基本参数配置】中的 db.performance.test.interval 属性控制,如下图所示: 默认值为60s,即每分钟对报表性能检测一次,用户也可以手动修改该值。 ➢说明: 首次打开报表或者同时打开多个报表后切换选中报表会对报表性能立即进行检测,其它操作会按属性值进行检测。 •超时检测提示 数据库/集市计算的超时时间、BI内存计算的超时时间检测可以分别通过【系统设置 > 系统参数配置 > 基本参数配置】中的pre.process.timeout 、post.process.timeout设置。 默认值为10000毫秒,超过设置值,弹出如下的提示。 •数据集保存时是否进行性能检测和自服务数据集节点的有用性检测。 数据集保存时是否进行性能检测和自服务数据集节点的有用性检测可以通过【系统设置 > 系统参数配置 > 基本参数配置】中dataset.save.check设置。 默认值为true表示保存时当性能检测或有用性检测不通过时弹出检测结果的提示框,设置成false表示保存时不弹此框。 •保存报告性能检测提示 用户制作完报告后,点击“保存”或“另存为”,默认会弹出检测性能提示框列出报告中存在的所有性能问题,用户可以根据列出的问题原因和建议对报告进行相应修改,如下图所示: 点击“继续保存”,报告保存成功;点击“取消”或“关闭”,用户可以继续制作报告。 保存报告时是否弹出检测性能提示可以通过【系统设置 > 系统参数配置 > 基本参数配置】中的db.save.performance.detail属性控制,如下图所示: 该属性值可以为true或false,默认为true。当值为true时,保存报告时会弹出检测性能提示框;当值为false时,保存报告时不会弹出检测性能提示框,用户可以根据需要进行配置。 4.性能检测原因 •系统原因 当用户将一些数据量相关的属性值修改的超过默认值后,可能会引起产品计算的压力太大,对此我们会进行提示并收集到系统原因中。 1)设置的过滤组件或参数组件的最大行数list.qry.maxrow超过了默认值10000,会弹出提示,如下图所示: 用户点击“确定”强制修改该值后,如果报告里存在过滤组件或参数组件时,会将此信息收集到系统原因中,如下图所示: 解决方法:在系统设置>系统参数配置>数据量参数配置中修改 list.qry.maxrow 参数值。 2)设置的freestyle.max.size超过了默认值500000 如果报告中存在自由式表格或自由式填报表格,会将性能检测信息收集到系统原因中。 解决方法:一些使用自由式表格的格间计算场景,实际上通过计算列一样可以计算出来,可以考虑改为计算列后再绑定;您也可以修改bi.properties里freestyle.max.size默认值,但默认值太大可能会增大报表负荷,造成卡顿。 3)设置的参数可选值browseParamlist.maxrow的最大行数超过默认值5000 如果报告中存在弹出参数,且可选值来自于数据集,会将性能检测信息收集到系统原因中。 解决方法:可以到系统设置>系统参数配置>数据量参数配置中修改browseParamlist.maxrow参数值,可选参数值不宜太大,否则可能会造成卡顿。 4)设置的组件的加载数据行数max.load.rows超过了默认值5000000 如果报告中存在表格,交叉表,自由式表格、图表,且绑定了数据,会将性能检测信息收集到系统原因中。 解决方法:可以到【系统设置 > 系统参数配置 >数据量参数配置】中修改max.load.rows参数值,不能超过上限1000000000。 5)如果设置的导出csv的行数csv.max.row超过了限制5000000 如果报告中存在表格,交叉表,自由式表格、图表,且绑定了数据,会将性能检测信息收集到系统原因中。 解决方法:可以到bi.properties中修改csv.max.rows参数值并重启。 6)如果设置的交叉表的行数pivot.max.row超过了默认值500000 如果报告中存在交叉表组件或自由式表格组件,且绑定了数据,会将性能检测信息收集到系统原因中。 解决方法:可以到bi.properties中修改pivot.max.row参数值并重启。 7)设置的轴标签的最大个数chart.axis.label.max.count超过了限制5000 如果报告中存在图表组件,且绑定了数据,会将性能检测信息收集到系统原因中。 解决方法:可以到bi.properties中修改chart.axis.label.max.count参数值并重启。 •报表原因 用户在制作报告新增列时,如果该列不能下推到数据库执行,会显示为橙色标识,且鼠标悬浮在该列上有性能检测提示,如下图所示: 当报表有以下几种情况时,会收集到报表原因中: 1)组件上使用的SQL数据集中,列不能下推到数据库执行,或组件的过滤中设置的过滤条件不能下推到数据库执行,如下图所示: 解决方法:在制作报表前,可以先对数据集进行过滤,只留下有效的数据,减少内存负荷。 2)过滤组件或者参数组件没有勾选默认值且空选项策略设置为全部数据,即一次性把所有的数据都展示出来,如下图所示: 解决方法:给过滤组件、参数组件设置默认值。 3)组件上使用的SQL数据集中,列为逻辑判断类型的细节表达式(表达式中有if语句),如下图所示: 解决方法:可以用过滤列代替计算列。 4)组件中维度绑定的个数超过10个,如下图所示: 解决方法:将与分析无关的数据字段从绑定区域移除,建议绑定的维度不超过10个。 5)报告中有多个筛选条件时,如下图所示: 解决方法:在报告中添加批量提交按钮,勾选全部过滤条件后批量提交再执行筛选。 6)对于已经支持了分页的数据库,在制作明细表时没有使用分页,如下图所示: 解决方法:在组件设置里面勾选“分页”,每页展示适量的数据行数。 •数据集原因 1)当报表组件依赖的数据集(SQL数据集/自服务数据集/组合数据集)有不能下推到数据库执行的列/操作或者SQL数据集的过滤中的过滤条件不能下推到数据库执行时,会将此信息收集到数据集原因中,如下图所示: 解决方法:Mongo计算列尽量使用管道命令,数据集在进行关联计算之前先过滤出有效的数据,可以降低需要进行联接的数据量,提高性能,减少不必要的字段进行计算等。 2)在数据集和报告的静态性能检测中,对mpp执行做检测。执行计划中行数超过一定数量。 解决方法:该限制受dc.perf.query.maxrow参数控制,默认为10000000。 3)两个入集市的数据集做了联合查询时判断是否满足map-side join,不满足则进行性能提示。 解决方法:抽取数据时勾选分片列再入集市。
|