学习arthas(十六)热点功能火焰图

Arthas
placeholder image
admin 发布于:2023-10-02 23:27:13
阅读:loading

arthas profiler提供了火焰图(Flame Graph)功能,可以帮助开发人员更直观地了解应用程序的性能瓶颈和调用链。profiler 命令支持生成应用热点的火焰图。本质上是通过使用 async-profiler不断的采样,然后把收集到的采样结果生成火焰图。

什么是火焰图(Flame Graph)?

火焰图是一种可视化工具,用于呈现函数调用栈的层级结构和执行时间的比例。它以一种直观的方式显示了程序中各个函数的执行时间和调用关系,能够帮助开发人员快速定位性能瓶颈所在并进行优化。不过需要注意,profiler模块在采集性能数据时会对应用造成一定的影响,建议在生产环境中谨慎使用。

如何生成火焰图? 

使用arthas profiler生成火焰图的步骤如下:

(1)启动arthas控制台,并连接到目标应用程序。

(2)执行profiler start命令,开始性能分析。

(3)让应用程序运行一段时间,以收集足够的性能数据。

(4)执行profiler stop命令,停止性能分析。

(5)执行profiler flame命令,生成火焰图。

火焰图的结构和含义?

火焰图由一系列水平条形图组成,每个条形图代表一个函数调用。条形图的宽度表示函数的执行时间,越宽表示执行时间越长。条形图的垂直位置表示调用栈的层级关系,越靠上表示调用栈越深。

如何解读火焰图?

定位性能瓶颈:查找宽度较大的条形图,表示执行时间较长的函数,可能是性能瓶颈所在。可以从顶部开始,逐层向下查找,找到函数调用链上的瓶颈点。

查看调用关系:从左到右观察条形图的水平位置,可以了解函数调用的顺序和关系。水平位置越靠左表示函数调用发生在调用栈的较早阶段。

比较不同版本:可以生成多个火焰图,对比不同版本的性能差异,找出引入性能问题的代码变更。

火焰图的工具和用途?

arthas profiler:arthas提供了生成火焰图的功能,可以方便地在应用程序中进行性能分析和调优。

VisualVM:VisualVM是一款Java性能分析工具,也支持生成火焰图。它可以与arthas profiler配合使用,提供更全面的性能分析和调优功能。

这个命令会启动CPU的使用率采集器,对应用的CPU使用率进行采集。

除了CPU之外,还可以选择其他指标进行采集,例如:

- 线程数:start thread

- 内存占用:start memory

- I/O操作:start io

- SQL执行:start sql

这个命令会在命令行中输出采集的数据,同时在浏览器中打开一个地址,展示生成的火焰图。

火焰图是一个可交互的图形化界面,可以根据方法的执行时间、执行次数等进行排序和过滤,并展示相应的方法调用链。

其它说明

image.png

(帮助文档)

(火焰图)

GitHub async-profiler https://github.com/async-profiler/async-profiler

html效果和预览图gif下载:火焰图预览.zip

关于arthas写了这么多的技术,属实不想再继续折腾了,有缘再继续吧。

 点赞


 发表评论

当前回复:作者

 评论列表


留言区