Arthas使用笔记

参考阿里官方文档学习

Arthas(阿尔萨斯)

Alibaba开源的Java诊断工具(需要JDK6+)

使用(安装使用Linux与windos一致,支持tab补全指令,路径)

直接启动jar包,必须有Java进程运行否则直接退出

image-20210512104922200

运行后显示可选进程,使用数字回车选择(选择后,会切换目录到对应项目目录,既pwd查看是项目目录)(直接回车选择*标识的)

选择后除了使用命令行访问也可以使用浏览器访问 地址:http://localhost:3658/

实际是启动一个服务端,并启动了一个客服端

常用指令(命令可以使用tab补全)

q:所有持续输出的情况都是使用q退出

quit/exit:只退出当前客服端,不关闭服务器端 stop:关闭服务器端,所有客服端都将关闭

session:查看当前客服端session与对应附加的Java进程Id

reset:重置还原被增强的类 例如 reset 类名(还原指定类) reset *List(使用通配符指定还原类) reset(还原所有类)

thread(查看所有线程列表) thread id(根据ID获取对应线程的信息) thread -n num(查看最忙的num个线程信息) thread -b(查看处于阻塞状态的线程信息) thread -i time(单位毫秒)(用指定的采样时间来计算只显示一次)

jad 全类名 [方法名(若加方法名只反编译对应的方法)]:反编译对应类文件或方法 --source-only(指定只显示源码,默认还会显示类加载器,位置等信息)

cat,pwd与Linux的一致 cls与Linux的clear一致清空屏幕输出(也可以使用Ctrl+l)

grep与Linux有部分不一致 只能用于管道符查找 其他与Linux一致

-n 显示行号 -i 忽略大小写 -m num 指定只查找num行 -e “正则表达式” 使用正则查找

getstatic 全类名 静态属性名(查看指定静态字段,私有也可以)

ognl ‘OGNL表达式’(执行OGNL表达式返回执行结果)(可以使用 #变量名 存放临时变量在后面引用)

sc:查看类的信息可以使用统配符 -d查看详细信息 -f查看属性信息(必须与-d参数结合使用)

sm:查看指定类的方法信息 -d查看详细信息

mc Java文件路径 -d 指定class文件输出路径(内存编译代码,若不指定-d输出位置,会输出到默认目录不方便使用,会自动创建包文件夹)

sysprop:查看所有Java系统属性信息 sysprop key(查看指定Java系统属性) sysprop key value(修改指定Java系统属性)

vmoption:查看虚拟机系统参数 vmoption key(查看指定参数) vmoption key value(修改虚拟机参数)

options:查看Arthas的参数设置 options key(查看指定参数) options key value(修改指定参数)

sysenv:查看操作系统环境变量,无法修改

help:帮助

version:查看当前Arthas版本

keymap:查看所有快捷键映射

jvm:查看jvm信息

dashboard命令

查看仪表盘 q:退出

image-20210512121602102

redefine指令

redefine class文件路径

加载外部class文件,注意redefine后的类不能使用reset恢复,jad,watch,trace,monitor,tt会使redefine后的代码失效

不允许添加方法与字段,对于运行中的函数修改不生效,函数在退出运行时才会替换生效

dump指令

dump 全类名,通配符 -d 输出位置(输出内存的class文件到指定目录,会自动建立包文件夹)

classloader指令

直接使用查看所有类加载器及其加载的示例 -l(按示例统计) -t(查看类加载器的继承树) -a(显示所有类加载器加载的示例,谨慎使用)

classloader -c 类加载器hashcode -r 资源(使用指定类加载器加载指定资源)

classloader -c 类加载器hashcode -load 全类名(使用指定类加载器加载指定类)

monitor指令

monitor 全类名 方法名(指定监听方法执行情况) -c time(指定多久统计一次,默认120s)

image-20210513111439025

watch

查看方法调用情况(耗时,返回值等)

watch 全类名 方法名 “输出表达式” -x num(指定输出属性的展示深度,默认为1) -b(方法执行前监控) -e(发生异常监控) -s(方法返回之前监控) -f(最终监控) -n num(执行指定次数后自动退出)

例如:watch com.sk.test print “{params,returnObj,target}” -x 2(params参数数组,returnObj返回值,target调用对象)

watch com.sk.test print “{params,returnObj,target}” “returnObj.size>2”(可以使用OGNL进行条件指定) -x 2(params参数数组,returnObj返回值,target调用对象)

trace

对方法调用各部分耗时追踪

trace 全类名匹配 方法名匹配 ‘OGNL条件表达式’(除了可以使用返回值等,还可以使用#cost指定耗时时间,单位毫秒) -n num(指定执行次数,到达自动停止) --skipJDKMethod false(指定是否跳过Java自带的方法调用,默认跳过)

例子:trace part7.Test7 getList ‘#cost>1’ -n 3 指定显示耗时大于1毫秒的,指定执行3次自动退出

stack

查看方法调用路径

stack 全类名匹配 方法名匹配 ‘OGNL条件表达式’ -n num(指定执行次数,到达自动停止) (与上一个及其类似不过不显示耗时)

tt(time-tunnel时间隧道)

tt -t 全类名匹配 方法名匹配 ‘OGNL判断表达式’ (开始记录指定的方法调用信息,再次调用会与前面没有清除的累计) -n num(指定此次监听多少次)

tt -l 显示已经记录的列表 tt -i index 根据索引(index)查看指定调用的详细信息

tt -s ‘OGNL判断表达式’ 按指定条件搜索 tt -i index -p 重放选择的调用

tt -d -i index 删除指定记录 tt --delete-all 删除所有记录

profiler(火焰图)

profiler start(开始抽样数据,默认抽样CPU) profiler list(查看所有支持的抽样指标) profiler getSamples(查看已经抽样的数量)

profiler status(查看抽样状态,默认就是查看已经抽样的时间) profiler stop(停止抽样,并生成svg火焰图,可以使用–fromat html指定输出格式)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值