Arthas_命令使用

https://blog.csdn.net/u013735734/article/details/102930307

运行,并选定监控PID;

  1. java -jar arthas-boot.jar ;再输入相应PID的序号;
  2. java -jar arthas-boot.jar [PID] ;

常用命令

1. dashboard 当前系统的实时数据面板

image.png

2. thread 查看当前 JVM 的线程堆栈信息

使用 thread查看所有线程信息,同时会列出每个线程的 CPU 使用率,可以看到图里 ID 为12 的线程 CPU 使用100%。


image.png

使用命令 thread 12 查看 CPU 消耗较高的 12 号线程信息,可以看到 CPU 使用较高的方法和行数(这里的行数可能和上面代码里的行数有区别,因为上面的代码在我写文章时候重新排过版了)。


image.png

上面是先通过观察总体的线程信息,然后查看具体的线程运行情况。如果只是为了寻找 CPU 使用较高的线程,可以直接使用命令 thread -n [显示的线程个数] ,就可以排列出 CPU 使用率 Top N 的线程。


image.png

定位到的 CPU 使用最高的方法。

使用 thread | grep pool 命令查看线程池里线程信息。


image.png

thread -b 命令查看死锁信息

3. watch 方法执行数据观测

查看入参和出参

$ watch com.Arthas addHashSet '{params[0],returnObj}'

查看入参和出参大小

$ watch com.Arthas addHashSet '{params[0],returnObj.size}'

查看入参和出参中是否包含 'count10'

$ watch com.Arthas addHashSet '{params[0],returnObj.contains("count10")}'

查看入参和出参,出参 toString

$ watch com.Arthas addHashSet '{params[0],returnObj.toString()}'

4. trace 方法内部调用路径,并输出方法路径上的每个节点上耗时

trace com.UserController getUser

5. stack 输出当前方法被调用的调用路径

stack com.UserServiceImpl mysql 查看方法的调用信息

6. tt 方法执行数据的时空隧道,记录下指定方法每次调用的入参和返回信息

并能对这些不同的时间下调用进行观测

7. monitor 方法执行监控

监控统计方法的执行情况;
每5秒统计一次 com.UserServiceImpl 类的 get 方法执行情况。
monitor -c 5 com.UserServiceImpl get

8. jvm 查看jvm信息

9. vmoption 查看,更新 JVM 诊断相关的参数

10.sc 查看 JVM 已加载的类信息

sc -d -f com.Arthas 查看类的字段信息

11.sm 查看已加载类的方法信息

sm 命令查看类的方法信息
sm com.Arthas

12.ognl

ognl 表达式特殊用法( https://github.com/alibaba/arthas/issues/71 )

ognl '@com.Arthas@hashSet' 查看变量的值

ognl '@[email protected]()' 查看静态变量 hashSet 大小

ognl '@[email protected]("test")' 置值

ognl '@com.Arthas@hashSet' | grep test 查看添加的字符

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

jad com.Arthas

反编译只显示源码

jad --source-only com.Arthas

反编译某个类的某个方法

jad --source-only com.Arthas mysql

13. classloader 查看 classloader 的继承树,urls,类加载信息

14.heapdump 类似 jmap 命令的 heap dump 功能

15.shutdown 退出 并且 Arthas 同时自动重置所有增强过的类

你可能感兴趣的:(Arthas_命令使用)