Arthas
2020-10-10 09:41:22 0 举报
AI智能生成
Arthas实战
作者其他创作
大纲/内容
快速开始
java -jar arthas-boot.jar
扫描java进程
attach到指定进程
使用
常用命令
dashboard
进程信息面板
-i 时间间隔
dashboard -i 1000
-n 执行次数
dashboard -n 1
sc
查看jvm已加载的类信息
-d 查看详细信息
sc -d ClassName
sm
查看jvm已加载类的方法信息
-d查看详细信息
sm -d ClassName method
jad
反编译
--source-only 反编译只显示源码
jad --source-only ClassName
thread
查看当前jvm中的线程及堆栈信息
-b 查看目前block的线程
thread -b
-n 查看top n线程数目
thread -n 3
-i 统计采样时间间隔
thread -n 3 -i 1000
-id 查看指定线程的运行堆栈
thread 1
watch 查看函数的参数、返回值、异常信息,如果有请求触发,就回打印对应的数据
-b 在方法调用之前观察
watch ClassName method "{params,returnObj}" -x 2 -b
-e 在方法异常之后观察
watch ClassName method "{params,returnObj}" -x 2 -e
-s 在方法返回之后观察
watch ClassName method "{params,returnObj}" -x 2 -s
-f 在方法结果之后观察
watch ClassName method "{params,returnObj}" -x 2 -f
-x 指定输出结果的属性遍历深度
watch ClassName method "{params,returnObj}" -x 2
jvm
查看当前jvm中的线程信息
-b 查看目前block的线程
jvm -d
-i 统计指定时间间隔内的cpu利用率
jvm -i 1000
-n 查看cpu占用率前n个线程的堆栈信息
jvm -n 2
trace 方法内部调用路径,并输出方法路径上的每个节点上耗时
trace ClassName method -n 1 '#cost > 10'
stack
输出当前方法被调用的调用路径
stack ClassName method
结合ognl: stack ClassName method "params[0]<0" -n 2
tt
记录下指定方法每次调用的入参和返回信息并能对这些不同的时间下调用进行观测
tt -t ClassName method
tt -i index
使用条件表达式区分重载
tt -t ClassName method print 'params[1] instanceof Integer'
tt -t ClassName method print 'params.length==1'
tt -i index -p 请求重放
monitor
方法执行监控
-c 统计周期,默认值为120秒
monitor -c 5 ClassName method
classloader
-t 打印所有的classloader继承树
classloader -t
-l 按类加载实例进行统计
classloader -l
-c 查看URLClassLoader实际的urls
classloader -c hashcode
redefine 加载外部.class文件
redefine /seewo/ClassName.class
refine -c classLoaderHashcode /tmp/Test.class /com/seewo/$Test.class
https://alibaba.github.io/arthas/redefine.html
ognl表达式
调用静态函数
ognl '@java.lang.System@out.println("hello")'
获取静态类的静态字段
ognl '@ClassName@staticField
通过hashcode指定classloader
classloader -t
ognl -c hashcode @org.springframework.boot.logAdapter@loger
实践案例
dubbo
在线调试
profiler
0 条评论
下一页