文章目录
Arthas 是一款线上监控诊断产品,通过全局视角实时查看应用 load、内存、gc、线程的状态信息,并能在不修改应用代码的情况下,对业务问题进行诊断,包括查看方法调用的出入参、异常,监测方法执行耗时,类加载信息等,大大提升线上问题排查效率。
Arthas安装
curl -O https://arthas.aliyun.com/arthas-boot.jar
java -jar arthas-boot.jar
执行完上面命令之后,我们使用ls -a
可以看到下载后的隐藏文件。
attach进程
1.启动math-game
curl -O https://arthas.aliyun.com/math-game.jar
java -jar math-game.jar
2.启动arthas
java -jar arthas-boot.jar
常用命令
1.dashboard仪表盘
显示JVM中内存的情况,JVM环境信息
dashboard
2.thread 命令来获取到进程的 Main Class
显示当前进程所有线程信息
thread
thread 1
会打印线程 ID 1 的栈,通常是 main 函数的线程
3.通过 jad 来反编译
反编译指定类或方法
jad demo.MathGame
4.watch查看返回值
监视某个方法的执行情况,监视返回值
watch
通过watch命令来查看demo.MathGame#primeFactors函数的返回值:
5.退出 arthas
如果只是退出当前的连接,可以用quit
或者exit
命令。Attach 到目标进程上的 arthas 还会继续运行,端口会保持开放,下次连接时可以直接连接上。
如果想完全退出 arthas,可以执行stop
命令。
基础命令1
1.help
2.cat
打印文件内容,和 linux 里的 cat 命令类似。
3.grep
匹配查找,和Linux里的grep命令类似,但它只能用于管道命令。
- 匹配系统属性:sysprop | grep java会显示所有包含“java”的系统属性。
- 带行号的匹配:sysprop | grep java -n会在显示匹配行的同时显示其行号。
- 非匹配项展示:sysenv | grep -v JAVA 会显示所有不包含“JAVA”的环境变量。
- 正则表达式匹配:sysenv | grep -e "(?i)(java|sun)"会以忽略大小写的方式匹配“java”或“sun”,并显示结果。
4.pwd
返回当前的工作目录,和 linux 命令类似
5.cls
清空当前屏幕区域。
基础命令2
1.session
查看当前会话的信息,显示当前绑定的 pid 以及会话 id。
2.reset
重置增强类,将被 Arthas 增强过的类全部还原,Arthas 服务端stop时会重置所有增强过的类。
3.version
输出当前目标 Java 进程所加载的 Arthas 版本号。
4.history
history 指令可以查看当前 arthas 服务器的所有历史命令,而不仅只是当前次会话使用过的命令。
5.quit
退出当前 Arthas 客户端,其他 Arthas 客户端不受影响。等同于exit、logout、q三个指令。