arthas常用命令

文档

Arthas 用户文档

启动

wget https://alibaba.github.io/arthas/arthas-boot.jar
java -jar arthas-boot.jar

命令

dashboard

查看当前java进程的实时数据面板

dashboard

thread

查看当前线程信息

thread

classloader

类加载器信息

按类加载类型查看统计信息

classloader

查看ClassLoader统计信息和实例hash

classloader -l

查看ClassLoader的继承树

classloader -t

ognl

执行ognl表达式

执行静态方法

ognl '@java.lang.Math@abs(-1)'

获取静态变量

ognl '@java.lang.System@out'

指定ClassLoader执行静态方法

ognl默认使用SystemClassLoader,非默认加载器加载的Class无法读取,需要通过sc -d com.sz.Test(推荐)或者classloader -l命令获取加载该CLass的类加载器的hash后,指定hash执行静态方法

ognl -c 439f5b3d '@[email protected]("test")'

sc

查看JVM已加载的类信息

模糊搜索已加载的类

sc *service*

打印类的详细信息

sc -d com.sz.Test

jad

反编译指定已加载类的源码

反编译输出到文件

jad com.sz.Test > /opt/Test.java

monitor

方法执行监控

每5秒输出方法的访问次数

monitor -c 5 com.sz.Test test

watch

输出方法出参和返回值

watch com.sz.Test test "{params,returnObj}" -x 3

条件表达式过滤

watch com.sz.Test test "{params,returnObj}" "params[1]==5" -x 3

异常输出

watch com.sz.Test test "{params[0],throwExp}" -e -x 2

tt

方法执行数据的隧道

记录方法调用的环境现场

tt -t com.sz.Test test

输出

 INDEX    TIMESTAMP              COST(ms)    IS-RET   IS-EXP   OBJECT            CLASS     METHOD
---------------------------------------------------------------------------------------------------
 1000     2019-04-05 15:49:28    17.526337   true     false    0x6c03fb16        Test      test 

通过环境现场的index获取方法对象

tt -i 1000 -w 'target.log.info("hello world")'

Alibaba Arthas实践–获取到Spring Context,然后为所欲为

常见问题

需要监控31299 进程,输入 2 回车后,监控到了 1进程 23873

发布了185 篇原创文章 · 获赞 38 · 访问量 21万+

猜你喜欢

转载自blog.csdn.net/sz85850597/article/details/89044497