位置: IT常识 - 正文

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

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

推荐整理分享Arthas-trace命令查看方法性能开销耗时、追踪方法调用路径(arthas常用命令),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:arthas 命令,arthas查看代码,arthas 查看变量内容,arthas 查看变量内容,arthas trace命令,arthas常用命令,arthas 命令,arthas常用命令,内容如对您有帮助,希望把文章链接给更多的朋友!

trace 命令能主动搜索 class-pattern/method-pattern 对应的方法调用路径,渲染和统计整个调用链路上的所有性能开销和追踪调用链路。

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

这里重点要说明的是观察表达式,观察表达式的构成主要由 ognl 表达式组成,所以你可以这样写"{params,returnObj}",只要是一个合法的 ognl 表达式,都能被正常支持。

观察的维度也比较多,主要体现在参数 advice 的数据结构上。Advice 参数最主要是封装了通知节点的所有信息。

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

很多时候我们只想看到某个方法的 rt 大于某个时间之后的 trace 结果,现在 Arthas 可以按照方法执行的耗时来进行过滤了,例如trace *StringUtils isBlank '#cost>100’表示当执行时间超过 100ms 的时候,才会输出 trace 的结果。

trace 函数$ trace demo.MathGame runPress Q or Ctrl+C to abort.Affect(class-cnt:1 , method-cnt:1) cost in 28 ms.`---ts=2019-12-04 00:45:08;thread_name=main;id=1;is_daemon=false;priority=5;TCCL=sun.misc.Launcher$AppClassLoader@3d4eac69 `---[0.617465ms] demo.MathGame:run() `---[0.078946ms] demo.MathGame:primeFactors() #24 [throws Exception]`---ts=2019-12-04 00:45:09;thread_name=main;id=1;is_daemon=false;priority=5;TCCL=sun.misc.Launcher$AppClassLoader@3d4eac69 `---[1.276874ms] demo.MathGame:run() `---[0.03752ms] demo.MathGame:primeFactors() #24 [throws Exception]

提示:结果里的 #24,表示在 run 函数里,在源文件的第24行调用了primeFactors()函数。=

trace 次数限制

如果方法调用的次数很多,那么可以用-n参数指定捕捉结果的次数。比如下面的例子里,捕捉到一次调用就退出命令。

$ trace demo.MathGame run -n 1Press Q or Ctrl+C to abort.Affect(class-cnt:1 , method-cnt:1) cost in 20 ms.---ts=2019-12-04 00:45:53;thread_name=main;id=1;is_daemon=false;priority=5;TCCL=sun.misc.Launcher$AppClassLoader@3d4eac69 `---[0.549379ms] demo.MathGame:run() +---[0.059839ms] demo.MathGame:primeFactors() #24 `---[0.232887ms] demo.MathGame:print() #25Command execution times exceed limit: 1, so command will exit. You can set it with -n option.包含 jdk 的函数–skipJDKMethod skip jdk method trace, default value true. 默认情况下,trace 不会包含 jdk 里的函数调用,如果希望 trace jdk 里的函数,需要显式设置–skipJDKMethod false。$ trace --skipJDKMethod false demo.MathGame runPress Q or Ctrl+C to abort.Affect(class-cnt:1 , method-cnt:1) cost in 60 ms.`---ts=2019-12-04 00:44:41;thread_name=main;id=1;is_daemon=false;priority=5;TCCL=sun.misc.Launcher$AppClassLoader@3d4eac69 `---[1.357742ms] demo.MathGame:run() +---[0.028624ms] java.util.Random:nextInt() #23 +---[0.045534ms] demo.MathGame:primeFactors() #24 [throws Exception] +---[0.005372ms] java.lang.StringBuilder:<init>() #28 +---[0.012257ms] java.lang.Integer:valueOf() #28 +---[0.234537ms] java.lang.String:format() #28 +---[min=0.004539ms,max=0.005778ms,total=0.010317ms,count=2] java.lang.StringBuilder:append() #28 +---[0.013777ms] java.lang.Exception:getMessage() #28 +---[0.004935ms] java.lang.StringBuilder:toString() #28 `---[0.06941ms] java.io.PrintStream:println() #28`---ts=2019-12-04 00:44:42;thread_name=main;id=1;is_daemon=false;priority=5;TCCL=sun.misc.Launcher$AppClassLoader@3d4eac69 `---[3.030432ms] demo.MathGame:run() +---[0.010473ms] java.util.Random:nextInt() #23 +---[0.023715ms] demo.MathGame:primeFactors() #24 [throws Exception] +---[0.005198ms] java.lang.StringBuilder:<init>() #28 +---[0.006405ms] java.lang.Integer:valueOf() #28 +---[0.178583ms] java.lang.String:format() #28 +---[min=0.011636ms,max=0.838077ms,total=0.849713ms,count=2] java.lang.StringBuilder:append() #28 +---[0.008747ms] java.lang.Exception:getMessage() #28 +---[0.019768ms] java.lang.StringBuilder:toString() #28 `---[0.076457ms] java.io.PrintStream:println() #28据调用耗时过滤$ trace demo.MathGame run '#cost > 10'Press Ctrl+C to abort.Affect(class-cnt:1 , method-cnt:1) cost in 41 ms.---ts=2018-12-04 01:12:02;thread_name=main;id=1;is_daemon=false;priority=5;TCCL=sun.misc.Launcher$AppClassLoader@3d4eac69 ---[12.033735ms] demo.MathGame:run() +---[0.006783ms] java.util.Random:nextInt() +---[11.852594ms] demo.MathGame:primeFactors() ---[0.05447ms] demo.MathGame:print()

提示:只会展示耗时大于 10ms 的调用路径,有助于在排查问题的时候,只关注异常情况

是不是很眼熟,没错,在 JProfiler 等收费软件中你曾经见识类似的功能,这里你将可以通过命令就能打印出指定调用路径。 友情提醒下,trace 在执行的过程中本身是会有一定的性能开销,在统计的报告中并未像 JProfiler 一样预先减去其自身的统计开销。所以这统计出来有些许的不准,渲染路径上调用的类、方法越多,性能偏差越大。但还是能让你看清一些事情的。[12.033735ms] 的含义,12.033735 的含义是:当前节点在当前步骤的耗时,单位为毫秒[0,0,0ms,11]xxx:yyy() [throws Exception],对该方法中相同的方法调用进行了合并,0,0,0ms,11 表示方法调用耗时,min,max,total,count;throws Exception 表明该方法调用中存在异常返回这里存在一个统计不准确的问题,就是所有方法耗时加起来可能会小于该监测方法的总耗时,这个是由于 Arthas 本身的逻辑会有一定的耗时trace 多个类或者多个函数

trace 命令只会 trace 匹配到的函数里的子调用,并不会向下 trace 多层。因为 trace 是代价比较贵的,多层 trace 可能会导致最终要 trace 的类和函数非常多。

可以用正则表匹配路径上的多个类和函数,一定程度上达到多层 trace 的效果。

trace -E com.test.ClassA|org.test.ClassB method1|method2|method3排除掉指定的类

使用 --exclude-class-pattern 参数可以排除掉指定的类,比如:

trace javax.servlet.Filter * --exclude-class-pattern com.demo.TestFilter
本文链接地址:https://www.jiuchutong.com/zhishi/288752.html 转载请保留说明!

上一篇:增值税专用发票是否有限额(增值税专用发票的税率是多少啊)

下一篇:世界著名气泡酒产地普罗塞克山丘,意大利威尼托 (© Olimpio Fantuz/Sime/eStock Photo)(世界著名气泡酒公司)

  • 苹果13手机怎么实现长截屏或滚动截屏功能吗(苹果13手机怎么截屏 截图方法)

    苹果13手机怎么实现长截屏或滚动截屏功能吗(苹果13手机怎么截屏 截图方法)

  • 华为手机测量身高功能在哪里打开(华为手机测量身高)

    华为手机测量身高功能在哪里打开(华为手机测量身高)

  • 华为手机怎么看运行内存(华为手机怎么看用了多长时间)

    华为手机怎么看运行内存(华为手机怎么看用了多长时间)

  • 苹果7plus怎么进入dfu模式(苹果7plus怎么进入刷机模式)

    苹果7plus怎么进入dfu模式(苹果7plus怎么进入刷机模式)

  • 手机淘宝投诉后在哪里可以看(手机淘宝投诉后怎么撤销)

    手机淘宝投诉后在哪里可以看(手机淘宝投诉后怎么撤销)

  • qq被赞动画怎么恢复默认(怎么把qq的被赞动画改掉)

    qq被赞动画怎么恢复默认(怎么把qq的被赞动画改掉)

  • qq小屏幕聊天怎么弄(qq怎么小窗口)

    qq小屏幕聊天怎么弄(qq怎么小窗口)

  • 苹果无线耳机二代和三代的区别(苹果无线耳机二代pro)

    苹果无线耳机二代和三代的区别(苹果无线耳机二代pro)

  • 微信加人过于频繁要等多久(微信加人过于频繁申诉怎么写)

    微信加人过于频繁要等多久(微信加人过于频繁申诉怎么写)

  • 手机怎么分屏(手机怎么分屏一边看电视一边聊天)

    手机怎么分屏(手机怎么分屏一边看电视一边聊天)

  • 网速达到多少kb正常(网速达到多少可以抖音直播)

    网速达到多少kb正常(网速达到多少可以抖音直播)

  • 电话被呼死怎么解决(电话被呼死报警有用吗)

    电话被呼死怎么解决(电话被呼死报警有用吗)

  • 华为nove7pro怎么分屏(华为nove7pro怎么用)

    华为nove7pro怎么分屏(华为nove7pro怎么用)

  • icloud合并还是不合并(icloud合并与不合并区别)

    icloud合并还是不合并(icloud合并与不合并区别)

  • 爱奇艺怎么传离线视频(爱奇艺怎么传离线电影)

    爱奇艺怎么传离线视频(爱奇艺怎么传离线电影)

  • 将打印输出另存为是什么意思(将打印输出另存为怎么解决)

    将打印输出另存为是什么意思(将打印输出另存为怎么解决)

  • ie80是监听耳机吗

    ie80是监听耳机吗

  • 手机号不用了微信怎么办(手机号不用了微信号怎么找回)

    手机号不用了微信怎么办(手机号不用了微信号怎么找回)

  • 手机映射什么意思(智能手机映射是什么意思)

    手机映射什么意思(智能手机映射是什么意思)

  • 微信收款怎么收到卡里(微信收款怎么收信用卡的钱)

    微信收款怎么收到卡里(微信收款怎么收信用卡的钱)

  • 荣耀手环3来电怎样接听(荣耀手环3来电不震动解决办法)

    荣耀手环3来电怎样接听(荣耀手环3来电不震动解决办法)

  • 制作视频时创意有哪些技巧(制作视频的创意)

    制作视频时创意有哪些技巧(制作视频的创意)

  • 华为6g和8g区别(华为6g8g内存区别很大吗)

    华为6g和8g区别(华为6g8g内存区别很大吗)

  • 台式电脑花屏怎么解决(台式电脑花屏怎么回事)

    台式电脑花屏怎么解决(台式电脑花屏怎么回事)

  • 苹果x屏幕出现一条绿线(苹果换屏幕后屏幕乱跳)

    苹果x屏幕出现一条绿线(苹果换屏幕后屏幕乱跳)

  • 小米手机回收站恢复的照片在哪里(小米手机回收站删除的照片怎么恢复)

    小米手机回收站恢复的照片在哪里(小米手机回收站删除的照片怎么恢复)

  • 京东自营店如何装修(京东自营店如何运营好)

    京东自营店如何装修(京东自营店如何运营好)

  • 公司股东变更需要本人到场吗
  • 税务纳税等级m级是什么等级
  • 我国当前税制结构的基本情况是怎样的
  • 个独企业缴纳个人经营所得税额的会计分录
  • 职工教育经费能结转几年
  • 土地增值税和房产税
  • 商标转让所需要的材料
  • 行政单位收到行政事业性收费,需要上缴国库
  • 租赁行业的增值税税率
  • 进项税额转出后续处理
  • 房产一般纳税人每个月报哪些税
  • 减免税款如何申报
  • 个人取得的拆迁款需要缴纳个人所得税吗
  • 开专票需要对方是一般纳税人吗
  • 核定征收营业范围
  • 劳保用品增值税税率是多少
  • 关于税控清卡清算的报告
  • 子公司给的股利用交税吗
  • 合同到期退房子,租金退吗
  • 丧失控制权合并报表内部交易抵消
  • 建设单位对工程施工的评价意见
  • 小企业会计准则成本核算方法选什么
  • 公允价值变动借方是增还是减
  • 计提工资社保公式是什么
  • 刚装好的服务器怎么安装
  • 企业亏损可以不缴纳公积金吗
  • 谨慎性原则的具体体现有哪些
  • win10锁屏壁纸模糊怎么回事
  • 收到税费返还是什么现金流量
  • QQExternal.exe是什么进程?QQExternal.exe进程为什么被运行?
  • 支付拍卖成交金额是多少
  • 税法规定哪些支出不得扣除
  • 投标保证金退回的利息计入什么费用
  • 分期摊销法计算公式
  • PHP:pg_send_execute()的用法_PostgreSQL函数
  • 公司赞助是什么意思
  • 利润分配弥补亏损会计分录
  • 无偿占用资金企业有哪些
  • php php.ini
  • php写一个简单的单例模式
  • react框架和vue哪个用的人多
  • pgrep命令作用及含义
  • 股东投资款怎么存入公司
  • 利润表中的管理费用怎么填
  • 公司租车公司
  • 内部交易费用外部交易费用
  • 缴纳上年汇算清缴的分录
  • python中的split函数
  • 金税盘的服务费
  • 会计人员信息采集怎么填
  • 百旺税控盘会自动清卡吗
  • 增值税专票开户行账号错了,可以抵扣吗
  • 外资企业和内资企业并举
  • 小规模防伪税控服务费多少钱
  • 商品周转天数计算方法
  • 小规模纳税人开专票税率是多少?
  • 个人银行存款要手续费吗
  • 个体注销名下的车辆需要过户吗
  • 服务外包离岸业务是什么
  • 理财中的非保本是什么意思
  • 厂家给的促销费可以退吗
  • MySQL ERROR 1045 (28000) 错误的解决办法
  • windows8禁用uac
  • linux开发经验指的什么
  • 2021年win10累积更新
  • 软件生态圈是什意思
  • linux html编辑器
  • Win10 Mobile RS1预览版14267.1004升级过程截图
  • react-native-navigation
  • android游戏排行榜
  • dos命令怎么输入命令
  • vue实现分页功能
  • python搭建虚拟环境torch
  • python 技巧
  • multiset volatile
  • 京东发票税号是几位数
  • 金米财税不退款怎么办
  • 车辆购置税查询平台打印
  • 税务局纳税服务工作总结
  • 原始股卖出多少需要披露
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设