学习arthas(十六)热点功能火焰图
Arthasadmin 发布于: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
这个命令会在命令行中输出采集的数据,同时在浏览器中打开一个地址,展示生成的火焰图。
火焰图是一个可交互的图形化界面,可以根据方法的执行时间、执行次数等进行排序和过滤,并展示相应的方法调用链。
其它说明
(帮助文档)
(火焰图)
GitHub async-profiler :https://github.com/async-profiler/async-profiler
html效果和预览图gif下载:火焰图预览.zip
关于arthas写了这么多的技术,属实不想再继续折腾了,有缘再继续吧。
点赞
发表评论
评论列表
留言区
- 开篇学习arthas啦
- 学习arthas(一)安装与入门介绍
- 学习arthas(二)Web Console控制台
- 学习arthas(三)命令大全与简单命令
- 学习arthas(四)系统命令
- 学习arthas(五)类命令
- 学习arthas(六)增强命令
- 学习arthas(七)arthas-tunnel-server的摸索
- 学习arthas(八)查找某个被加载的类
- 学习arthas(九)动态执行一些代码
- 学习arthas(十)方法执行结果监控
- 学习arthas(十一)输出方法调用栈
- 学习arthas(十二)跟踪方法代码的执行
- 学习arthas(十三)监视代码的执行结果
- 学习arthas(十四)方法执行时的时空隧道
- 学习arthas(十五)无侵入的热部署