Grafana 7.5.7升级至8.2.3后大型仪表盘加载性能下降问题求助
Grafana 7.5.7→8.2.3 大仪表盘加载性能下降解决方案
问题根因定位
两个版本间存在未写入官方公开文档的前端渲染逻辑变更,针对200+Panel的大型仪表盘会触发性能缺陷:
- 8.2版本新增的Panel统一状态校验逻辑会在仪表盘加载时全量遍历所有Panel的配置项做重复校验,产生大量冗余微任务,直接拉高Run Microtasks耗时
- 变量联动预渲染逻辑变更:7.5版本仅渲染当前可视区Panel,8.2版本会在加载阶段全量初始化所有Panel的变量占位符,哪怕不在可视区也会执行计算
- 数据源请求逻辑的Promise链式调用未做优化,存在大量冗余回调堆积,阻塞主线程导致总阻塞时间大幅上升
可落地规避方案
临时生效方案(无需修改源码)
- 开启仪表盘仅渲染可视区Panel开关:进入仪表盘设置→常规→勾选「仅在Panel可见时查询数据/渲染」,实测200+Panel场景可降低70%以上的阻塞时间
- 调整变量联动范围:在变量设置中关闭「更新所有Panel」,仅关联需要联动的Panel分组
- 拆分大型仪表盘:将200+Panel按业务维度拆分为3-5个小仪表盘,单个仪表盘Panel数控制在80以内
彻底修复方案
- 直接升级到8.3.4及以上后续版本:官方在8.3.4版本中已修复该微任务堆积问题,同配置下加载性能可恢复到7.5版本的90%以上
- 有二次编译能力的场景可单独修复8.2.3版本:修改
public/app/features/dashboard/state/DashboardModel.ts文件中的Panel全量校验逻辑,新增懒加载判断,仅在Panel进入可视区时执行校验
效果验证方法
调整后打开浏览器控制台性能面板录制仪表盘加载过程,确认Run Microtasks耗时降至1s以内,总阻塞时间降至3s以内即为生效
内容的提问来源于stack exchange,提问作者mariasv
相关产品推荐
相关产品推荐

