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

 更新时间:2022年06月08日 10:34:45   作者:横云断岭  
这篇文章主要为大家介绍了arthas jprofiler做复杂链路的调用分析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

背景

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

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

比如下图:

没有办法做聚合或过滤,这方面本地的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

3.2 反向分析

View -> Find 查找要分析的类和方法,然后选择 Analyze -> Calculate Backtraces to Selected Method

3.3 分析结果

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

总结

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

以上就是arthas jprofiler做复杂链路的调用分析的详细内容,更多关于arthas jprofiler复杂链路调用的资料请关注脚本之家其它相关文章!

相关文章

  • 使用MyBatis 动态update数据

    使用MyBatis 动态update数据

    使用mybatis写sql,需要动态更新对象数据,每次需要更新的字段不同,为了防止null空异常,就需要用动态sql了,下面给大家分享一段代码关于mybatis动态update,需要的朋友参考下
    2016-11-11
  • Spring Cloud 动态刷新配置信息教程详解

    Spring Cloud 动态刷新配置信息教程详解

    这篇文章主要介绍了Spring Cloud 动态刷新配置信息的教程,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2018-06-06
  • @PropertySource 无法读取配置文件的属性值解决方案

    @PropertySource 无法读取配置文件的属性值解决方案

    这篇文章主要介绍了@PropertySource 无法读取配置文件的属性值解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-06-06
  • Java实现高并发秒杀的七种方式

    Java实现高并发秒杀的七种方式

    本文主要介绍了Java实现高并发秒杀的六种方式,包括使用缓存、数据库乐观锁、数据库悲观锁、分布式锁、队列限流、令牌桶算法和限流器,具有一定的参考价值,感兴趣的可以了解一下
    2024-03-03
  • java实战项目之记账软件

    java实战项目之记账软件

    这篇文章主要介绍了java实战项目之记账软件,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-04-04
  • SpringBoot启动时自动执行指定方法的几种实现方式

    SpringBoot启动时自动执行指定方法的几种实现方式

    在Spring Boot应用程序中,要实现在应用启动时自动执行某些代码,本文主要介绍了SpringBoot启动时自动执行指定方法的几种方式,文中有相关的代码示例供大家参考,需要的朋友可以参考下
    2024-03-03
  • Java日常练习题,每天进步一点点(57)

    Java日常练习题,每天进步一点点(57)

    下面小编就为大家带来一篇Java基础的几道练习题(分享)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧,希望可以帮到你
    2021-08-08
  • SpringMVC多线程下无法获取请求的原因和解决方法

    SpringMVC多线程下无法获取请求的原因和解决方法

    从问题出发,逐步讲透在SpringMVC中使用RequestContextHolder对象在多线程情况下无法获取请求的真实原因,本文将和大家一起深入剖析SpringMVC多线程下无法获取请求的原因和解决,需要的朋友可以参考下
    2024-04-04
  • Java 深入探究讲解抽象工厂模式

    Java 深入探究讲解抽象工厂模式

    当系统所提供的工厂所需生产的具体产品并不是一个简单的对象,而是多个位于不同产品等级结构中属于不同类型的具体产品时需要使用抽象工厂模式,抽象工厂模式是所有形式的工厂模式中最为抽象和最具一般性的一种形态
    2022-04-04
  • Idea的Generate Sources无法生成QueryDSL问题及解决方法

    Idea的Generate Sources无法生成QueryDSL问题及解决方法

    这篇文章主要介绍了解决Idea的Generate Sources无法生成QueryDSL问题,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-02-02

最新评论