c/c++语言开发共享arthas jprofiler做复杂链路的调用分析

背景arthas是阿里巴巴开源的应用诊断利器,提供了profiler命令,可以生成热点火焰图。通过采样录制调用链路来做性能分析,极大提升了线上排查性能问题的效率。但是有一个问题,当async-prof

背景

arthas是阿里巴巴开源的应用诊断利器,提供了profiler命令,可以生成热点火焰图。通过采样录制调用链路来做性能分析,极大提升了线上排查性能问题的效率。

但是有一个问题,当async-profiler全量采样导出的svg文件太大时,想要找到关键的调用点,就非常困难。

比如下图:

arthas jprofiler做复杂链路的调用分析

没有办法做聚合或过滤,这方面本地的profiler工具比如jprofiler、yourkits就方便很多,有没有办法将两者结合起来呢?

经过分析发现,async-profiler支持jfr (java flight recorder)格式输出,jprofiler也支持打开jfr快照,成了!具体操作步骤如下:

1. arthas采样生成jfr文件

启动arthas之后,执行以下采样命令:

profiler start -f /home/admin/yourappname/target/arthas-output/%t.jfr -d 180

%t 表示当前时间,-d 后面是采样秒数

更多参数参见:

https://arthas.aliyun.com/doc/profiler.html

https://github.com/jvm-profiling-tools/async-profiler/blob/v1.6/src/arguments.cpp

2. 下载jfr到本地

可以用oss倒腾,或者szrz等其他途径倒腾到本地。

3. jprofiler分析

在做性能分析时我们常常想要找出:是谁在调用我,是谁调用我最多。下面举例介绍怎么做的。

3.1 打开快照

使用jprofiler打开jfr文件,选择open a snapshot, 打开之后选择cpu views

arthas jprofiler做复杂链路的调用分析

3.2 反向分析

view -> find 查找要分析的类和方法,然后选择 analyze -> calculate backtraces to selected method

arthas jprofiler做复杂链路的调用分析

3.3 分析结果

修改summation mode 为total times,即可看到这个方法被哪些上游调用到,调用量和占比

arthas jprofiler做复杂链路的调用分析

总结

  • 通过arthas profiler命令生成jfr文件;
  • 在本地通过jprofiler来分析jfr文件,定位谁在调用我;
  • 运用之妙,存乎一心。工具的互相结合,可以产生奇妙的化学反应。

以上就是arthas jprofiler做复杂链路的调用分析的详细内容,更多关于arthas jprofiler复杂链路调用的资料请关注<计算机技术网(www.ctvol.com)!!>其它相关文章!

需要了解更多c/c++开发分享arthas jprofiler做复杂链路的调用分析,都可以关注C/C++技术分享栏目—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/c-cdevelopment/1238063.html

(0)
上一篇 2022年9月11日
下一篇 2022年9月11日

精彩推荐