做者 | 羽涅 阿里巴巴 CCO 技术部技术专家,承担 CCO 技术部架构治理、基础技术能力建设方面工做,热衷开源技术,喜欢折腾电子产品。html
【Arthas 官方社区正在举行征文活动,参加即有奖品拿~点击投稿】git
Arthas 是阿里巴巴开源的应用诊断利器,提供了 profiler 命令,能够生成热点火焰图。经过采样录制调用链路来作性能分析,极大提高了线上排查性能问题的效率。github
可是有一个问题,当 async-profiler 全量采样导出的 svg 文件太大时,想要找到关键的调用点,就很是困难。架构
好比下图:less
没有办法作聚合或过滤,这方面本地的 profiler 工具好比 jprofiler、yourkits 就方便不少,有没有办法将二者结合起来呢?jvm
通过分析发现,async-profiler 支持 jfr (Java Flight Recorder) 格式输出,jprofiler 也支持打开 jfr 快照,成了!具体操做步骤以下:async
启动 arthas 以后,执行如下采样命令:ide
profiler start -f /home/admin/yourAppName/target/arthas-output/%t.jfr -d 180
%t 表示当前时间,-d 后面是采样秒数,更多参数参见:https://alibaba.github.io/arthas/profiler.htmlhttps://github.com/jvm-profiling-tools/async-profiler/blob/v1.6/src/arguments.cppsvg
能够用 oss 倒腾,或者 szrz 等其余途径倒腾到本地。微服务
在作性能分析时咱们经常想要找出:是谁在调用我,是谁调用我最多。下面举例介绍怎么作的。
使用 jprofiler 打开 jfr 文件,选择 Open a snapshot, 打开以后选择 CPU views:
View -> Find 查找要分析的类和方法,而后选择 Analyze -> Calculate Backtraces to Selected Method:
修改 Summation mode 为 Total times,便可看到这个方法被哪些上游调用到,调用量和占比。
jfr
文件;jprofiler
来分析jfr
文件,定位谁在调用我;Arthas 官方正在举行征文活动,若是你有:
不限,其它与 Arthas 有关的内容
欢迎参加征文活动,还有奖品拿哦~点击投稿
“阿里巴巴云原生关注微服务、Serverless、容器、Service Mesh 等技术领域、聚焦云原生流行技术趋势、云原生大规模的落地实践,作最懂云原生开发者的公众号。”