阿里Arthas(阿尔赛斯)-trace查看方法内部调用路径及耗时

java-使用Arthas全链路统计方法调用链和执行耗时 Arthas监控诊断产品功能比较多,可以帮助我们不停服务在线诊断问题。使用jmh配合Arthas可以进行吞吐量、平均执行时间等基础测试和性能监控分析,帮助开发人员科学定位性能瓶颈和优化点。 阅读详情

1.trace用法

  参数名称                        参数说明
class-pattern                类名表达式匹配
method-pattern            方法名表达式匹配
condition-express        条件表达式
[E]                                开启正则表达式匹配,默认为通配符匹配
[n:]                               命令执行次数
#cost                            方法执行耗时

2.方法内部调用路径,并输出方法路径上的每个节点上耗时

2.1追踪测试controller

[arthas@243829]$ trace com.ztesoft.bss.smart.controller.smartview.InjectionLabelSvController selectInjectionLabelByQo
Press Q or Ctrl+C to abort.
Affect(class count: 1 , method count: 1) cost in 738 ms, listenerId: 1
`---ts=2022-05-15 17:52:14;thread_name=http-nio-9283-exec-6;id=7e;is_daemon=true;priority=5;TCCL=org.springframework.boot.web.embedded.tomcat.TomcatEmbeddedWebappClassLoader@388c519
    `---[407.911209ms] com.ztesoft.bss.smart.controller.smartview.InjectionLabelSvController:selectInjectionLabelByQo()
        `---[99.77% 406.961126ms ] com.ztesoft.bss.smart.service.smartview.InjectionLabelSvService:selectInjectionLabelByQo() #46

2.2调用service继续追踪

[arthas@243829]$ trace com.ztesoft.bss.smart.service.knowledge.InjectionLabelService selectInjectionLabelByQo
Press Q or Ctrl+C to abort.
Affect(class count: 4 , method count: 3) cost in 749 ms, listenerId: 2
`---ts=2022-05-15 17:53:12;thread_name=http-nio-9283-exec-4;id=7c;is_daemon=true;priority=5;TCCL=org.springframework.boot.web.embedded.tomcat.TomcatEmbeddedWebappClassLoader@388c519
    `---[42.843392ms] com.ztesoft.bss.smart.service.smartview.InjectionLabelSvService$$EnhancerBySpringCGLIB$$f8b2271c:selectInjectionLabelByQo()
        `---[99.80% 42.758581ms ] org.springframework.cglib.proxy.MethodInterceptor:intercept()
            `---[99.26% 42.442896ms ] com.ztesoft.bss.smart.service.knowledge.InjectionLabelService:selectInjectionLabelByQo()
                +---[0.06% 0.024413ms ] com.ztesoft.bss.smart.qo.knowledge.InjectionLabelQo:getPage() #112
                +---[0.02% 0.007316ms ] com.ztesoft.bss.smart.qo.knowledge.InjectionLabelQo:getRowNum() #113
                +---[0.22% 0.093465ms ] com.ztesoft.sy.auth.account.AccountUtil:superAdminFlag() #115
                +---[1.79% 0.760542ms ] com.ztesoft.sy.auth.account.AccountUtil:getComAcctId() #119
                +---[0.03% 0.010955ms ] com.ztesoft.bss.smart.qo.knowledge.InjectionLabelQo:setComAcctId() #119
                +---[0.02% 0.007334ms ] com.ztesoft.bss.smart.qo.knowledge.InjectionLabelQo:setCreateStaff() #120
                +---[0.70% 0.298646ms ] com.ztesoft.bss.smart.service.sys.StaticDataService:getDcSystemParamByCache() #122
                +---[86.32% 36.638723ms ] com.ztesoft.bss.smart.service.knowledge.InjectionLabelService:getInjectionLabelVoListByDataMarket() #126
                +---[0.16% min=0.004865ms,max=0.013961ms,total=0.067991ms,count=10] com.ztesoft.bss.smart.vo.knowledge.InjectionLabelVo:getCreateStaff() #130
                +---[7.39% min=0.191947ms,max=1.050793ms,total=3.136803ms,count=10] com.ztesoft.bss.smart.util.UserRedisUtil:getPortalUserInfoByUserId() #130
                +---[0.16% min=0.00613ms,max=0.011424ms,total=0.069345ms,count=10] com.ztesoft.bss.smart.entity.redis.PortalUserInfo:getUserCode() #132
                +---[0.15% min=0.005232ms,max=0.009599ms,total=0.061828ms,count=10] com.ztesoft.bss.smart.vo.knowledge.InjectionLabelVo:setStaffName() #132
                +---[0.04% 0.017747ms ] com.github.pagehelper.PageInfo:<init>() #141
                `---[0.04% 0.016784ms ] com.ztesoft.bss.smart.util.SmartPageHelper:toPageVO() #141

结果里的 #46,表示在run函数里,在源文件的第46行调用了selectInjectionLabelByQo()函数。

2.3追踪跳过jdk方法

[arthas@243829]$ trace --skipJDKMethod false  com.ztesoft.bss.smart.controller.smartview.InjectionLabelSvController selectInjectionLabelByQo
Press Q or Ctrl+C to abort.
Affect(class count: 1 , method count: 1) cost in 250 ms, listenerId: 3
`---ts=2022-05-15 18:04:14;thread_name=http-nio-9283-exec-3;id=7b;is_daemon=true;priority=5;TCCL=org.springframework.boot.web.embedded.tomcat.TomcatEmbeddedWebappClassLoader@388c519
    `---[41.388497ms] com.ztesoft.bss.smart.controller.smartview.InjectionLabelSvController:selectInjectionLabelByQo()
        `---[99.66% 41.248976ms ] com.ztesoft.bss.smart.service.smartview.InjectionLabelSvService:selectInjectionLabelByQo() #46

2.4根据耗时过滤

[arthas@243829]$ trace com.ztesoft.bss.smart.service.knowledge.InjectionLabelService selectInjectionLabelByQo '#cost > 10'
Press Q or Ctrl+C to abort.
Affect(class count: 4 , method count: 3) cost in 655 ms, listenerId: 5
`---ts=2022-05-15 18:06:46;thread_name=http-nio-9283-exec-10;id=82;is_daemon=true;priority=5;TCCL=org.springframework.boot.web.embedded.tomcat.TomcatEmbeddedWebappClassLoader@388c519
    `---[37.235754ms] com.ztesoft.bss.smart.service.smartview.InjectionLabelSvService$$EnhancerBySpringCGLIB$$f8b2271c:selectInjectionLabelByQo()
        `---[99.56% 37.070939ms ] org.springframework.cglib.proxy.MethodInterceptor:intercept()
            `---[98.81% 36.629713ms ] com.ztesoft.bss.smart.service.knowledge.InjectionLabelService:selectInjectionLabelByQo()
                +---[0.06% 0.02256ms ] com.ztesoft.bss.smart.qo.knowledge.InjectionLabelQo:getPage() #112
                +---[0.02% 0.005655ms ] com.ztesoft.bss.smart.qo.knowledge.InjectionLabelQo:getRowNum() #113
                +---[0.25% 0.089755ms ] com.ztesoft.sy.auth.account.AccountUtil:superAdminFlag() #115
                +---[1.97% 0.721886ms ] com.ztesoft.sy.auth.account.AccountUtil:getComAcctId() #119
                +---[0.02% 0.008909ms ] com.ztesoft.bss.smart.qo.knowledge.InjectionLabelQo:setComAcctId() #119
                +---[0.01% 0.005292ms ] com.ztesoft.bss.smart.qo.knowledge.InjectionLabelQo:setCreateStaff() #120
                +---[0.75% 0.27514ms ] com.ztesoft.bss.smart.service.sys.StaticDataService:getDcSystemParamByCache() #122
                +---[75.22% 27.553217ms ] com.ztesoft.bss.smart.service.knowledge.InjectionLabelService:getInjectionLabelVoListByDataMarket() #126
                +---[0.80% min=0.003084ms,max=0.216341ms,total=0.294483ms,count=10] com.ztesoft.bss.smart.vo.knowledge.InjectionLabelVo:getCreateStaff() #130
                +---[15.60% min=0.150012ms,max=1.987379ms,total=5.712897ms,count=10] com.ztesoft.bss.smart.util.UserRedisUtil:getPortalUserInfoByUserId() #130
                +---[0.25% min=0.003333ms,max=0.018778ms,total=0.090289ms,count=10] com.ztesoft.bss.smart.entity.redis.PortalUserInfo:getUserCode() #132
                +---[0.20% min=0.003077ms,max=0.018022ms,total=0.073496ms,count=10] com.ztesoft.bss.smart.vo.knowledge.InjectionLabelVo:setStaffName() #132
                +---[0.11% 0.041464ms ] com.github.pagehelper.PageInfo:<init>() #141
                `---[0.13% 0.047302ms ] com.ztesoft.bss.smart.util.SmartPageHelper:toPageVO() #141

利用Arthas分析优化接口执行时长 背景 最近接手一个项目,里面有个http接口请求超过了100s的时间,居然还有调用方来调用这个接口。。。于是受命优化这个接口的请求时长,就想到了Arthas工具。 一、Arthas 简介 Arthas 是Alibaba开源的Java诊断工具,深受开发者喜爱,使用详见官方文档。 二、trace 命令分析接口执行耗时 Arthas 中的 trace 命令能够输出方法内部调用路径,并输出方法路径上的每个节点上耗时。 trace 命令使用,见文档。 由于生产容器运维不给权限安装Artha... 阅读详情

相关推荐

对Arthas-Trace命令的一次深度剖析,竟发现...

目前据arthas官方解释:因为trace多层是十分消耗资源的,因此trace命令只会支持一层的耗时分析。 如果出现如下图的情况,trace命令的处理就会变得十分麻烦。

qq_44816011的博客 6966

Arthas-trace命令查看方法性能开销耗时、追踪方法调用路径

Arthas-trace命令查看方法性能开销耗时、追踪方法调用路径

小蜗牛的博客 1万+

Arthas使用教程(8大分类)

1、基础命令。2、JVM相关。3、类与类加载器。4、option全局选项。5、项目中使用案例。

lydms的博客 11万+

Arthas-trace/watch参数过滤追踪

arthas的trace通过参数过滤精确追踪

earthshaker_1的博客 6735

手把手教你用示波器搞定PCIe 5.0 REFCLK时钟信号测量(附完整参数解读)

本文详细介绍了如何使用示波器进行PCIe 5.0 REFCLK时钟信号测量,包括示波器与探头的选择、关键参数的测量方法及解读,以及实战中的常见问题与解决方案。通过手把手教学和完整参数解读,帮助硬件工程师高效完成时钟信号测量,确保系统稳定性。

weixin_28704565的博客 361

zemax光线光扇图

通过入瞳某一坐标(PX,PY)的光线在像面上有唯一的位置(EX,EY),以EX,EY为纵坐标,以PX,PY为横坐标,分别建立坐标系,把通过入瞳的光线都在坐标系里描点就得到了光扇图。对于视场内任意一点,取其子午面内的光线,以光线在光阑面上的透射点坐标为横坐标,同时以该光线在像面上的坐标为纵坐标,描出所有点,构成的图形即为子午面光扇图。在焦点位置,曲线的斜率为0,也就是说,不管入射时的横坐标(光阑面上的位置)是多少,离轴多远,都将汇聚在焦点处。此时,子午面和弧矢面有不同的分布,两条曲线不重合。

fendoudecheng的博客 8103

查看某程序的日志命令_手把手教你使用Arthas的trace命令排查线上服务平均响应时间太长问题...

你知道的越多,不知道的就越多,业余的像一棵小草!你来,我们一起精进!你不来,我和你的竞争对手一起精进!编辑:业余草来源:suo.im/5XtQMD推荐:https://www.xttblog.com/?p=5112前言最近线上环境某个接口服务响应时间偏长,导致用户体验超差,那平时该怎么快速的排查这类问题呢?为代码添加上详细的打印日志;不建议,一是线上环境,没法随便的重新部署更换了详细日志...

weixin_39916379的博客 792

LaTeX小白必看:5分钟搞定GB/T 7714-2005参考文献格式(Texmaker+BibTeX实战)

本文为LaTeX初学者提供了使用Texmaker编辑器和BibTeX工具链,快速实现GB/T 7714-2005参考文献格式的实战指南。文章详细解析了从获取gbt7714-2005.bst样式文件、编写.bib数据库到四步编译流程的核心步骤,并附有常见问题解决方案,帮助用户高效、准确地完成学术论文的参考文献排版。

weixin_29295541的博客 338

深入探索 Java 方法调用:Arthas trace 命令全解析

深入探索 Java 方法调用:Arthas trace 命令全解析

一起coding,一起嗨。 2270

通过EMIF接口实现FPGA与DSP的高速连接(方法)

请注意,具体的连接细节和步骤可能会根据所使用的FPGA和DSP型号以及特定的应用需求而有所不同。开发DSP和FPGA上的软件,以实现数据交换和处理。根据系统的具体需求,对FPGA和DSP的接口逻辑进行优化,以减少延迟、提高数据吞吐量或降低资源消耗。它通常支持多种类型的存储器,如SRAM、DRAM、ROM等,以及通过特定的接口与FPGA连接。对于FPGA,需要编程来实现与DSP的接口逻辑,包括地址译码、数据传输、时序控制等。在连接完成后,进行详细的调试和测试,以确保数据能够在DSP和FPGA之间正确传输。

AigcFox的博客 4590

ICG cell如何通过Latch结构消除与门clock gating中的glitch?

本文深入解析了ICG Cell如何利用Latch结构解决传统与门时钟门控中的毛刺问题。通过将电平敏感锁存器与门控与门结合,ICG Cell将使能信号的变化严格限制在时钟低电平的安全窗口内采样和锁存,从而在时钟有效沿期间提供稳定的控制信号,从根本上消除了因信号延迟不同步而产生的glitch,确保了门控时钟的纯净与电路功能的可靠性。

weixin_29234423的博客 474

Java 诊断利器 Arthas monitor/watch/trace命令

Arthas monitor/watch/trace命令

前尘忆梦Memory的博客 6977

利用自己的域名和cloudflare实现邮件转发(无限邮箱注册cursor使用账号) 保姆级图文

大家喜欢的话,给个👍,点个关注!给大家分享更多计算机专业学生的求学之路!发现你走远了@mzh原创作品,转载必须标注原文链接欢迎关注『发现你走远了』 专栏,持续更新中欢迎关注『发现你走远了』 专栏,持续更新中『未完待续』

MZH 414

1.arthas基础

1.下载启动arthas curl -O https://arthas.aliyun.com/arthas-boot.jar java -jar arthas-boot.jar 2.基础命令: 命令 说明 dashboard 查看当前系统实时数据,如线程,jvm等信息 thread 查看当前线程信息 watch 观测方法执行的数据 jvm 查看当前jvm信息 sc 查看jvm已加载的类信息 sm 查看已加载的类的信息 trace 查看方法内部调用路径 cls 清空当前屏幕区域 2.1dashboar

huangchong0107的博客 1109

【NVMEM子系统】二、NVMEM驱动框架

该子系统整体架构不算太大,还是比较容易去理解的,下面我们一起去一探究竟!,该子系统主要用于实现EEPROMEfuse等非易失存储器的统一管理。在早期,像EEPROM驱动是存放于目录下,由于没有做到好的抽象,每次需要去访问相应内存空间,都需要去复制几乎一样的代码,去注册sysfs,这是一个相当大的抽象泄露。NVMEM子系统就是为了解决以往的抽象泄露问题。

Donge's Blog 1715

【OpenClaw从入门到精通】第60篇:多智能体协同实战——用“龙虾”搭建你的数字员工团队(2026企业版)

2026年AI Agent企业落地的核心趋势,正从“单Agent单兵作战”转向“多智能体协同组网”。本文以全球开发者先锋大会“百虾大战”真实案例为蓝本,深度拆解OpenClaw多智能体协同的技术内核——三层解耦架构(模型层-技能层-网关层),系统搭建包含项目经理、架构师、执行者、质量把关者的4大核心Agent团队。通过三种主流协作架构对比、全链路配置代码实操、故障自愈实战演练,结合电商新品上架虚拟场景全流程演示,解决企业多Agent部署中的权限隔离、任务协同、运维自治三大核心痛点。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 770

Arthas trace (方法内部调用路径,并输出方法路径上的每个节点上耗时)

很多时候我们只想看到某个方法的 rt 大于某个时间之后的 trace 结果,现在 Arthas 可以按照方法执行的耗时来进行过滤了,例如。命令在 Arthas 中用于跟踪方法的执行过程,能够详细记录方法调用的时间、参数、返回值等信息。对应的方法调用路径,渲染和统计整个调用链路上的所有性能开销和追踪调用链路。表示当执行时间超过 100ms 的时候,才会输出 trace 的结果。参数指定捕捉结果的次数。,只要是一个合法的 ognl 表达式,都能被正常支持。方法内部调用路径,并输出方法路径上的每个节点上耗时。

刘大猫 2021

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

Arthas常用的命令(二)--trace

trace 命令只会 trace 匹配到的函数里的子调用,并不会向下 trace 多层。可以用正则匹配路径上的多个类和函数,进行多层 trace。

Cyms,BgXmSfXtsj !!!! Battle Each Moment !!!! 1394

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

Arthas教程

arthas教程

Yourisa的博客 3665

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Arthas入门使用

Arthas 是一款线上监控诊断产品

WannaRunning的博客 3998

arthas的trace命令

Arthas 是阿里巴巴开源的 Java 诊断工具,它主要用来对 Java 应用的运行时信息进行监控和跟踪。trace命令是 Arthas 中非常强大的一个功能,它可以追踪方法的内部调用路径,并输出方法的调用树,同时展示每个方法的调用耗时,非常适用于定位复杂的性能问题。

liu_rockefeller的博客 5180

线上服务平均响应时间太长,怎么排查?

最困难的事情就是认识自己! 个人网站 ,欢迎访问! 前言: 最近线上环境某个接口服务响应时间偏长,导致用户体验超差,那平时该怎么快速的排查这类问题呢? ①、为代码添加上详细的打印日志; 不建议 ,一是线上环境,没法随便的重新部署更换了详细日志的代码,二是 添加详细的日志输出,那就意味这会生成大量的日志文件,这些日志文件会占据大量服务器磁盘空间。 ②、搭建一个模拟了线上环境的测试环境进行复盘排查;额,出现了这种问题哪有那么多的时间让你进行环境复盘排查,所以此方案也是 不建议的 。 ③、线上诊断神器 Ar.

木子雷的博客 2231

java诊断工具-Arthas(trace命令)接口性能优化

trace命令作用 输出方法路径上的每个节点上耗时。每次只能跟踪一级方法的调用链路。 1、trace demo.MathGame run 作用是持续打印出来,调用该方法的链路以及每步执行时间。 结果里的#24,表示在run函数里,在源文件的第24行调用了primeFactors()函数。 [0.409579ms]表示该primeFactors方法执行的用时。 [2.069657ms]表示run方法执行的总用时。 下图为通过jad demo.MathGame反编译类后的代码 2、如..

qaws9403的博客 3228

arthas神器--watch查看方法入参、出参、类成员变量

目录 一、原因 二、watch主要功能 三、使用 1、下载 2、测试类代码 四、示例 1、查看方法出参和返回值 2、查看类对象的属性 3、过滤不需要的请求 4、没有办法输出局部变量的值 五、arthas idea插件 一、原因 曾经,线上出了问题又定位不到问题原因,就开始抓耳挠腮,一遍一遍仔细看代码,到底是哪里可能出错了呢?然后在可能出错的地方加上日志,然后重新部署,再看输出日志;发现不行,还需要输出这个方法中的这个参数,然后再重新部署;一遍一遍循环往复,甚是繁琐。心想就没有一个想

宋凯的博客 7万+

python 输出文件中返回码为200的接口的平均响应时间_将一个接口响应时间从2s优化到 200ms以内的一个案例...

一、背景在开发联调阶段发现一个接口的响应时间特别长,经常超时,囧…本文讲讲是如何定位到性能瓶颈以及修改的思路,将该接口从 2 s 左右优化到 200ms 以内 。二、步骤2.1 定位定位性能瓶颈有两个思路,一个是通过工具去监控,一个是通过经验去猜想。2.1.1 工具监控就工具而言,推荐使用 arthas ,用到的是 trace 命令具体安装步骤很简单,大家自行研究。我的使用步骤是,先最终待研究的函...

weixin_39820185的博客 479

Error: Projects must list all files or use an ‘include‘ pattern.

在 is not listed within the file 指明的文件中的 include 中添加或修改路径正则。

qq_57756904的博客 1166
上一篇: Linux服务器上传 .class用base64加密,转换文件到服务器的技巧
下一篇: Elasticsearch在linux中匹配批量删除索引
SimpleSimpleSimples
博客等级 码龄10年 6451粉丝 115原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值