IT评测·应用市场-qidao123.com

标题: 线上诊断神器-arthas基本应用 [打印本页]

作者: 瑞星    时间: 2023-4-20 15:23
标题: 线上诊断神器-arthas基本应用
Arthas基本应用

一、Arthas作用

什么是Arthas呢?
​        Arthas 是一款阿里推出的线上监控诊断产品,通过全局视角实时查看应用 load、内存、gc、线程的状态信息,并能在不修改应用代码的情况下,对业务问题进行诊断,包括查看方法调用的出入参、异常,监测方法执行耗时,类加载信息等,大大提升线上问题排查效率。
那我们为什么要使用Arthas?
​        当我们定位线上bug时,无法定位到具体位置时,我们就可以使用Arthas来查看方法的出入参、方法的调用链路、以及内部方法报错、反编译class文件等等方式来精确定位到问题的位置。
二、安装Arthas

windows下载
windows最新版本安装地址
安装目录

Linux下载
  1. curl -O https://arthas.aliyun.com/arthas-boot.jar
复制代码
启动Arthas客户端
  1. java -jar arthas-boot.jar
复制代码
选择对应的监听服务

三、基本命令

3.1 dashboard命令


3.2 watch命令
  1. watch [类全路径名] [方法名] [参数列表....]
复制代码
栗子:
watch com.sefonsoft.cloud.govern.operation.biz.protal.controller.SearchController searchResource {'params, returnObj'} -x 3

参数名称参数说明class-pattern类名表达式匹配method-pattern函数名表达式匹配express观察表达式,默认值:{params, target, returnObj}condition-express条件表达式函数调用之前观察[e]在函数异常之后观察函数返回之后观察[f]在函数结束之后(正常返回和异常返回)观察[E]开启正则表达式匹配,默认为通配符匹配[x:]指定输出结果的属性遍历深度,默认为 1,最大值是 43.3 tt命令

watch 虽然很方便和灵活,但需要提前想清楚观察表达式的拼写,这对排查问题而言要求太高,因为很多时候我们并不清楚问题出自于何方,只能靠蛛丝马迹进行猜测。
这个时候如果能记录下当时方法调用的所有入参和返回值、抛出的异常会对整个问题的思考与判断非常有帮助。
于是乎,TimeTunnel 命令就诞生了。
  1. tt -t com.sefonsoft.cloud.govern.operation.biz.protal.controller.SearchController searchResource
复制代码
  1. tt -i 1000
复制代码

表格字段字段解释INDEX时间片段记录编号,每一个编号代表着一次调用,后续 tt 还有很多命令都是基于此编号指定记录操作,非常重要。TIMESTAMP方法执行的本机时间,记录了这个时间片段所发生的本机时间COST(ms)方法执行的耗时IS-RET方法是否以正常返回的形式结束IS-EXP方法是否以抛异常的形式结束OBJECT执行对象的hashCode(),注意,曾经有人误认为是对象在 JVM 中的内存地址,但很遗憾他不是。但他能帮助你简单的标记当前执行方法的类实体CLASS执行的类名METHOD执行的方法名3.4 trace命令

trace 命令能主动搜索 class-pattern/method-pattern 对应的方法调用路径,渲染和统计整个调用链路上的所有性能开销和追踪调用链路,也就是对监控的方法和方法内部的调用链路进行耗时统计。
  1. # 命令格式
  2. trace [参数] [类全路径名] [方法名]
  3. trace --skipJDKMethod false com.sefonsoft.cloud.govern.operation.biz.protal.controller.SearchController searchResource
复制代码

参数说明
参数名称参数说明class-pattern类名表达式匹配method-pattern方法名表达式匹配condition-express条件表达式[E]开启正则表达式匹配,默认为通配符匹配[n:]命令执行次数#cost方法执行耗时[m ]指定 Class 最大匹配数量,默认值为 50。长格式为[maxMatch ]。3.5 jad命令

jad 命令将 JVM 中实际运行的 class 的 byte code 反编译成 java 代码,便于你理解业务逻辑;
  1. # 命令格式
  2. jad [参数] [类全路径名] [方法名]
  3. jad --source-only com.sefonsoft.cloud.govern.operation.biz.protal.controller.SearchController searchResource
复制代码
参数说明
参数名称参数说明class-pattern类名表达式匹配[c:]类所属 ClassLoader 的 hashcode[classLoaderClass:]指定执行表达式的 ClassLoader 的 class name[E]开启正则表达式匹配,默认为通配符匹配
参考博客:
arthas官网

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!




欢迎光临 IT评测·应用市场-qidao123.com (https://dis.qidao123.com/) Powered by Discuz! X3.4