1. 为什么要进行性能优化
在使用 FineBI 时,可能会出现以下情况影响使用。
访问仪表板时加载时间很长。
频繁访问大数据量仪表板占用了过多的服务器内存而导致内存溢出。
过多的用户并发访问的时候服务器承受压力过大导致服务器崩溃。
频繁地出现请求超时。
更新时间长、更新报错、更新卡住。
若出现以上现象,说明需要进行性能优化来提高 BI 的使用体验。
2. 影响性能的因素
当系统出现性能问题时,首先应分析是什么原因导致缓慢再分析如何改进。
2.1 服务器性能
FineBI 作为纯 Java 软件,集成至服务器的 BI 会继承服务器的资源。服务器的虚拟内存、连接池的设置等等往往会导致很多性能问题。
2.2 数据准备
在制作自助数据集时,左右合并 有笛卡尔积时可能会出现数据膨胀从而导致更新失败或者更新耗时长的问题。
SQL 数据集的预览速度影响更新速度,可能导致取数预览缓慢,引起更新卡住等问题。
上传的数据中,存在长文本字段,导致性能下降,严重的可能引起宕机。
2.3 制作分析主题
在制作仪表板时,若制作的图表层级过多或者分组过多,或者单张仪表板制作组件数超过 30 个,就会引起仪表板展示速度缓慢。
上百万的数据量,使用DEF函数进行多层嵌套计算,或者使用 earlier 函数,都会导致性能变慢。
3. 如何进行性能优化
3.1 服务器性能优化
优化方法 | 文档 |
---|---|
设置合理的服务器配置 | 确认FineBI项目服务器配置 |
配置宕机风险参数 | 修改 FineBI 配置参数 |
若已经出现问题,需检查问题原因并优化 | BI宕机问题排查步骤 |
3.2 数据准备优化
3.2.1 数据格式
建议不要上传的长文本( 100 个字符以上)字段。
3.2.2 数据处理
规范数据处理方式,左右合并 N:N 场景需要控制使用,注意避免产生大数据量 N:N 关联。
3.2.3 数据更新
避免出现大量的单表定时更新,并且更新时间比较分散,尽量使用 全局更新
更新时将同一时间的任务合并,放在一起更新,减少自助数据集重复更新。
控制更新频率,减少白天使用系统时进行更新,或者白天使用系统时配置资源池参数。
3.2.4 数据使用
直连数据需检查数据库性能,保证数据库取数速度。
谨慎使用直连数据:直连数据
3.3 仪表板优化
1)数据类型
大数据量时,建议将直连数据集切换为抽取数据
直连数据的数据库执行速度慢,可优化 SQL 语句或者参考 直连数据中 SQL 参数使用 减少数据量。
2)数据计算
① 查看制作的仪表板是否进行了大量的计算,例如使用了去重计数、表头过滤、公式过滤等操作,可减少计算、寻求其他替代计算方式或者将仪表板计算移动到自助数据集中进行。
若对图表大数据分组有要求,可进行 图表大数据 GCC 升级
② DEF函数尽量不使用 earlier 函数计算,之后 BI 会上架 window 函数,代替earlier函数的使用场景。
③ 上百万数据量,DEF函数尽量避免多层嵌套,防止导致性能过慢
3)组件数量
除过滤组件外,其他组件数量建议不超过30。
过滤组件的条件数量建议不超过30。单个过滤组件,可能会有多个条件。
例如where 城市 = "无锡" or (城市 = "南京" and 城市 = "苏州"),虽然可能前端只有一个过滤组件,但对应的过滤条件是3个。