arthas jprofiler做复杂链路的调用分析
目录
- 背景
- 1. arthas采样生成jfr文件
- 2. 下载jfr到本地
- 3. jprofiler分析
- 3.1 打开快照
- 3.2 反向分析
- 3.3 分析结果
- 总结
背景
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复杂链路调用的资料请关注我们其它相关文章!
相关推荐
-
SpringBoot Admin集成诊断利器Arthas示例实现
目录 前言 SpringBoot Admin SBA 集成 客户端配置 在配置中心加入配置 实现开关效果 结束 前言 Arthas 是 Alibaba开源的Java诊断工具,具有实时查看系统的运行状况,查看函数调用参数.返回值和异常,在线热更新代码,秒解决类冲突问题.定位类加载路径,生成热点图,通过网页诊断线上应用. 如今在各大厂都有广泛应用,也延伸出很多产品. 这里将介绍如何将Arthas集成进SpringBoot监控平台中. SpringBoot Admin 为了方便SpringBoot
-
java定位死锁的三种方法(jstack、Arthas和Jvisualvm)
目录 死锁 死锁发生的原因 死锁发生的条件 1:通过jstack定位死锁信息 1.2:查看死锁线程的pid 2:通过Arthas工具定位死锁 3. 通过 Jvisualvm 定位死锁 死锁的预防 总结 死锁 死锁:是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去. 死锁发生的原因 死锁的发生是由于资源竞争导致的,导致死锁的原因如下: 系统资源不足,如果系统资源充足,死锁出现的可能性就很低. 进程(线程)运行推进的顺序不合适. 资源分配
-
Java开源诊断工具Arthas使用方法详解
一.前言 1.热更新代码的场景 (1)当线上服务器出现问题时,有些时候现有的手段不足以发现问题所在,可能需要追加打印日志或者增加一些调试代码,如果我们去改代码重新部署,会破坏问题现场,可以通过热部署的手段来增加调试代码 (2)线上出现紧急bug,通过Review代码找到问题,修改好后打包部署的流程可能比较久,可以通过热部署代码及时解决问题 二.使用阿里巴巴开源的Java诊断工具 ---Arthas,他可以附着在我们的Java服务器进程上面,查看服务器状态,jvm状态等各种参数指标,还可以进行热更
-
在Docker容器中使用Arthas的详细步骤
Arthas(阿尔萨斯) 能为你做什么? Arthas 是Alibaba开源的Java诊断工具,深受开发者喜爱. 当你遇到以下类似问题而束手无策时,Arthas可以帮助你解决: 这个类从哪个 jar 包加载的?为什么会报各种类相关的 Exception?我改的代码为什么没有执行到?难道是我没 commit?分支搞错了?遇到问题无法在线上 debug,难道只能通过加日志再重新发布吗?线上遇到某个用户的数据处理有问题,但线上同样无法 debug,线下无法重现!是否有一个全局视角来查看系统的运行状况?
-
arthas jprofiler做复杂链路的调用分析
目录 背景 1. arthas采样生成jfr文件 2. 下载jfr到本地 3. jprofiler分析 3.1 打开快照 3.2 反向分析 3.3 分析结果 总结 背景 Arthas是阿里巴巴开源的应用诊断利器,提供了profiler命令,可以生成热点火焰图.通过采样录制调用链路来做性能分析,极大提升了线上排查性能问题的效率. 但是有一个问题,当async-profiler全量采样导出的svg文件太大时,想要找到关键的调用点,就非常困难. 比如下图: 没有办法做聚合或过滤,这方面本地的profi
-
利用js的闭包原理做对象封装及调用方法
创建一个js文件,名为testClosure.js: (function () { function a() { alert('i am a'); } outFunc = function () { a(); } })(); 这里不论写多少个function,a b c d ...外面都调用不到,包括这里面var定义的变量也都调用不到,那么你在里面尽情的写,就不用担心这些函数名变量名跟外界冲突: 只需要暴露一个outFunc这个函数供外界调用.这个函数呢没有用var定义,就变成一个全局变量,外界
-
Android编程之Activity中onDestroy()调用分析
本文分析了Android编程之Activity中onDestroy()调用方法.分享给大家供大家参考,具体如下: 刚刚一个BUG让我发现,如果 activity 实现了一个回调接口,然后使用 this 设置给需要回调接口的方法,这种应用场景比较常见,最常见的就是实现 onClickListener 接口,然后 findViewById().setOnClickListenr(this) 如果,这个回调接口设置到了一个静态对象(单例模式),当 activity finish() 的时候(按返回键,
-
golang利用pprof与go-torch如何做性能分析
前言 软件开发过程中,项目上线并不是终点.上线后,还要对程序的取样分析运行情况,并重构现有的功能,让程序执行更高效更稳写. golang的工具包内自带pprof功能,使找出程序中占内存和CPU较多的部分功能方便了不少.加上uber的火焰图,可视化显示,让我们在分析程序时更简单明了. pprof有两个包用来分析程序一个是net/http/pprof另一个是runtime/pprof,net/http/pprof只是对runtime/pprof包进行封装并用http暴露出来,如下图源码所示: 使用n
-
ASP.NET Core整合Zipkin链路跟踪的实现方法
前言 在日常使用ASP.NET Core的开发或学习中,如果有需要使用链路跟踪系统,大多数情况下会优先选择SkyAPM.我们之前也说过SkyAPM设计确实比较优秀,巧妙的利用DiagnosticSource诊断跟踪日志,可以做到对项目无入侵方式的集成.其实还有一款比较优秀的链路跟踪系统,也可以支持ASP.NET Core,叫Zipkin.它相对于SkyWalking来说相对轻量级,使用相对来说比较偏原生的方式,而且支持Http的形式查询和提交链路数据.因为我们总是希望能拥有多一种的解决方
-
全链路监控平台Pinpoint SkyWalking Zipkin选型对比
前言 随着微服务架构的流行,服务按照不同的维度进行拆分,一次请求往往需要涉及到多个服务.互联网应用构建在不同的软件模块集上,这些软件模块,有可能是由不同的团队开发.可能使用不同的编程语言来实现.有可能布在了几千台服务器,横跨多个不同的数据中心.因此,就需要一些可以帮助理解系统行为.用于分析性能问题的工具,以便发生故障的时候,能够快速定位和解决问题. 全链路监控组件就在这样的问题背景下产生了.最出名的是谷歌公开的论文提到的 Google Dapper.想要在这个上下文中理解分布式系统的行为,就需要
-
全链路监控平台Pinpoint SkyWalking Zipkin选型对比
目录 前言 1.目标要求 2.功能模块 3.GoogleDapper 3.1.Span 3.2.Trace 3.3.Annotation 3.4.调用示例 3.4.1.请求调用示例 3.4.2.调用过程追踪 3.4.3.调用链核心工作 3.4.4.整体部署架构 3.4.5.AGENT无侵入部署 3.4.6.调用链监控好处 4.方案比较 探针的性能 4.1.collector的可扩展性 4.1.1.zipkin 4.1.2.skywalking 4.1.3.pinpoint 4.2.全面的调用链路
-
详解Webwork中Action 调用的方法
本文主要通过三个方面给大家介绍webwork action调用相关知识,三个方面分别是: 1.这部分框架类关系 2.Webwork 获取和包装 web 参数 3.DefaultActionProxyFactory.DefaultActionProxy.DefaultActionInvocation 一路走来,终于要开始 webwork 核心业务类的总结,webwork 通过对客户端传递的 web 参数重新包装,进行执行业务 Action 类,并反馈执行结果,本篇源码分析对应下图 WebWork
-
C#基础之异步调用实例教程
本文实例形式展示了C#中异步调用的实现方法,并对其原理进行了较为深入的分析,现以教程的方式分享给大家供大家参考之用.具体如下: 首先我们来看一个简单的例子: 小明在烧水,等水烧开以后,将开水灌入热水瓶,然后开始整理家务 小文在烧水,在烧水的过程中整理家务,等水烧开以后,放下手中的家务活,将开水灌入热水瓶,然后继续整理家务 这也是日常生活中很常见的情形,小文的办事效率明显要高于小明.从C#程序执行的角度考虑,小明使用的同步处理方式,而小文则使用的异步处理方式. 同步处理方式下,事务是按顺序一件一件
-
SpringCloud分布式链路跟踪的方法
注:作者使用IDEA + Gradle 注:需要有一定的java SpringBoot and SSM+Springcloud基础 程序测试错误追责 我举个例子,我现在要做一个电商项目,项目里面有一个购买模块,那我这边可能要执行一个代码,比如减库存之类的东西,那我两个服务不就是要相互调用嘛,我自身是一个服务,我现在要调用减库存这个服务: 你调用它,你知道它一定能执行成功吗?肯定是不一定: 比如说,我现在要执行一个减库存的代码,我调用这个方法会进行库存的一个更改,这个库存减少成功还好,万一要是失败
随机推荐
- 详解Centos7 下建立 Docker 桥接网络
- XP系统优化和安全限制 IE相关修改方法与注册表文件第1/2页
- Tomcat 多个应用配置方法
- php利用新浪接口查询ip获取地理位置示例
- 用fileupload组件实现的大文件上传简单实例
- C语言中实现KMP算法的实例讲解
- PHP文件上传类实例详解
- JS针对Array的各种操作汇总
- Javascript单元测试框架QUnitjs详细介绍
- 如何创建一个JavaScript弹出DIV窗口层的效果
- linux网络相关命令汇总(6)
- C#使用Socket实现发送和接收图片的方法
- jQuery focus和blur事件的应用详解
- Content-Location文件头定义方法(防止内部IP地址泄漏二法)
- 玩转注册表 系统注册表文件解锁奇招
- Android开发退出程序的方法汇总
- Android ListView组件详解及示例代码
- 我国成为全球第二大服务器消费国
- 使用vbs脚本实现自动打字祝福与搞笑实现代码
- 为IBM x3650 M2 服务器配置RAID卡图文教程