Linux环境安装
下载地址:https://alibaba.github.io/arthas/arthas-boot.jar
java -jar arthas-boot.jar 运行
quit 退出
stop 停止
Arthas快速入门
一.执行一个jar包
二.通过arthas来attach(黏附)
三.常用命令操作
诊断demo下载https://alibaba.github.io/arthas/arthas-demo.jar
1.启动demo的jar
java -jar arthas-demo.jar
2.启动arthas
java -jar arthas-boot.jar
Arthas命令
1.dashboard仪表板
dashboard
q 退出命令
2.通过thread命令来获取arthas-demo进程的Main Class
thread 命令
thread 1 查看ID为1的线程详细情况
3.通过jad来反编译Main Class
jad demo.MathGame 反编译包名.类名
4.watch监视(通过watch命令来查看函数的返回值)
watch demo.MathGame primeFactors returnObj watch 包名.类名
q 退出
5.退出arthas命令
stop 完全退出命令,结束会话
基础命令之一
1.help
2.cat 打印文件内容
3.grep 匹配查找
4.pwd 返回当前的工作目录,和linux命令类似
5.cls 清空当前屏幕区域
sysprop | grep java -n 显示带java的行号
sysprop | grep java -m 10 显示带行号的前10行
基础命令之二
1.session 显示java进程pid,session_id 为会话id
2.reset 重置增强类,将被Arthas增强过的类全部还原,Arthas服务端关闭时会重置所有增强过的类
3.version 输出当前java进程所加载的Arthas版本号
4.history 列出执行过的命令
5.quit 退出当前Arthas客户端,不影响其他会话
6.stop 关闭Arthas,所有会话全部退出
7.keymap 显示快捷键
jvm相关命令
1.dashboard
仪表板 按q退出
2.thread
thread tid 显示某个id线程的信息
thread -n 3 显示最忙的3个线程并打印堆栈信息
thread -b 处于阻塞状态的线程
thread -i 1000 -n 3 每隔1000毫秒显示前3个最繁忙的线程
thread --state WAITING 查看所有处于等待的线程
3.jvm
jvm
thread相关
COUNT:JVM当前活跃的线程数
DAEMON-COUNT:JVM当前活跃的守护线程数
PEAK-COUNT:从jvm启动开始曾经活着的最大线程数
STARTED-COUNT:从jvm启动开始总共启动过的线程次数
DEADLOCK-COUNT:jvm当前死锁的线程数
4.sysprop 查看和修改JVM的系统属性
jvm相关命令之二
1.sysenv 查看所有环境变量
sysenv
2.vmoption 查看jvm虚拟机的参数
vmoption
3.getstatic 类名 属性名 查看类的静态属性
getstatic demo.MathGame random getstatic 类名 属性名
4.ognl 同getstatic作用,有特定语法
Arthas高阶命令
dump 将已加载的字节码文件保存到特定目录
dump java.lang.String
classloader
classloader 查看所有的类加载器
monitor 监视指定类中方法的执行情况
monitor demo.MathGame primeFactors -c 5 monitor 包名.类名 方法名 每隔5秒
watch 观察指定方法的调用情况
watch定义了4个观察点,即-b 方法调用前,-e 方法异常后,-s 方法返回后,-f 方法结束后
4个观察事件点-b,-e,-s默认关闭,-f默认打开,在相应事件点会对观察表达式进行求值并输出
watch demo.MathGame primeFactors "{params,returnObj}" -x 2 查看 包名.类名 方法名 "{入参,返回值}" 深度为2
watch demo.MathGame primeFactors "{params,returnObj}" -x 2 -b 观测方法执行前的入参
watch demo.MathGame primeFactors "target" -x 2 -b 获取对象的属性
watch demo.MathGame primeFactors "target.illegalArgumentCount" -x 2 -b 获取对象illegalArgumentCount的属性信息
watch demo.MathGame primeFactors "{params,target,returnObj}" -x 2 -b -s -n 2 方法前,方法后返回入参,对象,出参信息,执行两次(-n 执行次数)
watch demo.MathGame primeFactors "{params[0],target}" "params[0]<0" 条件过滤,第一个入参参数小于0的信息
trace 对方法的内部调用路径,耗时进行输出。OGNL表达式使用。
trace demo.MathGame run -n 2 输出run方法的追踪信息 输出2次
ts:执行事件
thread_name:线程名称
红色:消耗资源较高的方法
stack 输出当前方法被调用的调用路径
stack demo.MathGame primeFactors 查看primeFactors方法的调用顺序
stack demo.MathGame primeFactors "params[0]<0" -n 2 查看primeFactors方法的调用顺序,过滤条件第一个参数小于0
stack demo.MathGame primeFactors "#cost>0.5" -n 2 查看primeFactors方法的调用顺序,过滤条件消耗事件大于0.5秒
tt 记录指定方法调用的入参和返回信息
tt -t demo.MathGame primeFactors
tt -i 1001 调用1001,返回详细信息
options 全局选项
profiler 火焰图对CPU进行采样
profiler start 启动命令
profiler list 查看支持的事件
profiler getSamples 获取样本数
profiler stop 停止,会生成样本图
profiler stop --format html 停止,生成指定格式的火焰图