性能问题排查-通用方法

基于Nebula的框架开发的应用程序在遇到性能问题时,可以按下面的步骤来分析性能原因:

  1. 从Venus中找到出现性能的应用程序
  2. 进入Kibana界面查看性能日志列表
  3. 展开OprName查看功能点的分布情况
  4. 从日志中进入JeagerUI查看具体的执行过程
  5. 根据JeagerUI的图形找到性能根因




从Venus中找到出现性能的应用程序

打开Venus页面,观察每个服务的【延迟数】指标,即可发现性能不佳的应用程序,例如:

xx



也可以观察【响应ms】这个指标,例如:

xx



这二个指标任何一个偏大,都表示程序有性能问题。

根据这2个指标找到线索后,可以点击【延迟数】下面的数字,即可进入Kibana界面查看性能日志列表。





进入Kibana界面查看性能日志列表

从Venus转到Kibana的日志列表界面展示如下:

xx

可以看到:

  • 索引已切换到 oprlog
  • 过滤条件已设置为当前环境的当前应用程序

在此,我们要做的操作就是按图片所示,点击【OprName】文字





展开OprName查看功能点的分布情况

此时的效果如下:

xx

图片展示了3个服务的性能统计情况。


根据Kibana的统计,我们可以直观的知道程序慢在哪些功能点上。

这是一个很重要的步骤,我们要确定分析&优化哪些较慢的业务功能。

经验&建议

  • 我们可以采用2/8原则,优先解决占比较多的业务功能即可
  • 尤其是挑选【占比数值】较大的

以图片为例:

  • 程序1:优化前2个功能
  • 程序2:优化前3个功能
  • 程序3:2个功能都要优化

确定功能范围后,可以点击后面的 + 来做进一步的过滤,例如:

xx

xx

在这个列表中,可以随机挑选几条日志,展示它们(按图片所示),例如:

xx


请点击: 【View in JeagerUI】链接





从日志中进入JeagerUI查看具体的执行过程

此时JeagerUI的展示如下:

xx





根据JeagerUI的图形找到性能根因

查看上面的图片,很明显: ToList 这个操作对应的 色块较长,表示这个操作的耗时较多。

点击它,可展示查看具体的执行过程描述:

xx

至此性能问题已定位清楚:就是一个SQL语句导致的!