性能问题排查-通用方法
基于Nebula的框架开发的应用程序在遇到性能问题时,可以按下面的步骤来分析性能原因:
- 从Venus中找到出现性能的应用程序
- 进入Kibana界面查看性能日志列表
- 展开OprName查看功能点的分布情况
- 从日志中进入JeagerUI查看具体的执行过程
- 根据JeagerUI的图形找到性能根因
从Venus中找到出现性能的应用程序
打开Venus页面,观察每个服务的【延迟数】指标,即可发现性能不佳的应用程序,例如:
也可以观察【响应ms】这个指标,例如:
这二个指标任何一个偏大,都表示程序有性能问题。
根据这2个指标找到线索后,可以点击【延迟数】下面的数字,即可进入Kibana界面查看性能日志列表。
进入Kibana界面查看性能日志列表
从Venus转到Kibana的日志列表界面展示如下:
可以看到:
- 索引已切换到 oprlog
- 过滤条件已设置为当前环境的当前应用程序
在此,我们要做的操作就是按图片所示,点击【OprName】文字,
展开OprName查看功能点的分布情况
此时的效果如下:
图片展示了3个服务的性能统计情况。
根据Kibana的统计,我们可以直观的知道程序慢在哪些功能点上。
这是一个很重要的步骤,我们要确定分析&优化哪些较慢的业务功能。
经验&建议
- 我们可以采用2/8原则,优先解决占比较多的业务功能即可
- 尤其是挑选【占比数值】较大的
以图片为例:
- 程序1:优化前2个功能
- 程序2:优化前3个功能
- 程序3:2个功能都要优化
确定功能范围后,可以点击后面的 + 来做进一步的过滤,例如:
在这个列表中,可以随机挑选几条日志,展示它们(按图片所示),例如:
请点击: 【View in JeagerUI】链接
从日志中进入JeagerUI查看具体的执行过程
此时JeagerUI的展示如下:
根据JeagerUI的图形找到性能根因
查看上面的图片,很明显: ToList 这个操作对应的 色块较长,表示这个操作的耗时较多。
点击它,可展示查看具体的执行过程描述:
至此性能问题已定位清楚:就是一个SQL语句导致的!