Arthas
安装与部署
安装
官网
https://arthas.aliyun.com/doc/quick-start.html
Windows
使用命令 curl -O https://alibaba.github.io/arthas/arthas-boot.jar 下载,得到文件 arthas-boot.jar 通过命令 java -jar arthas-boot.jar启动 arthas。启动时要求系统当前要有 java 项目在运行,否则会启动失败,提示使用 jps 查看 java 进程。要使用 jps 要求配置系统环境变量(JDK路径下的bin目录以及jre 下的 bin 目录)。 java 安装在默认路径 C:\Program Files\Java 的话还需要使用全路径指定 java,完整的命令是 "C:\Program Files\Java\jdk1.8.0_171\bin\java.exe" -jar arthas-boot.jar 运行后 arthas 会提示输入需要调试的进程的序号,回车进行调试。 第一次运行会在目录 C:\Users\Administrator 下的创建两个目录:.arthas 和 logs
Linux
linux 的安装方法和 windows里一样: curl -O https://alibaba.github.io/arthas/arthas-boot.jar 然后运行: java -jar arthas-boot.jar 检测到有 java 进程后提示输入序号进行绑定。第一次运行会在当前用户的home目录下创建名称为 .arthas 的目录 所以绝对路径是:~/.arthas 由于 linux 中以点开头表示隐藏目录,所以在当前用户的 ~ 目录下要使用命令 ls -a 查看所有目录。安装后在目录 /root/.arthas/lib/3.6.6/arthas下有文件 math-game.jar 用于演示 arthas 的使用,运行该 jar 后可 attach 到该进程进行演示性调试。
卸载
不管是上面的在线安装还是下载 zip 压缩包后的解压都是绿色软件,只要删除文件夹即可。即删除下面两个目录:
rm -rf ~/.arthas
rm -rf ~/logs/arthas
运行
端口占用
如果已经运行过一个 arthas 想要再次运行一个则需要修改运行端口
java -jar arthas-boot.jar --telnet-port 9998 --http-port -1
web运行
也可以通过 web 运行 [http://127.0.0.1:3658/](http://127.0.0.1:3658/)
windows服务tomcat
绑定到 windows 系统下的安装为 windows 服务的 tomcat,不可 java -jar arthas-boot.jar要像下图 
使用与命令
技巧
在命令后面跟参数 -h 表示查看该命令的使用方法,参数的作用
命令
quit
退出当前 arthas 客户端,如果同一个进程有多个 arthas 附加,则不影响其他 arthas 客户端
stop
退出 arthas 服务端,所有客户端跟随退出
dashboard

输入q 或者 ctrl+c 退出当前仪表盘
thread
查看最繁忙的3个线程:thread -n 3 查看WAITING状态的所有线程:thread --state WAITING

jvm
显示项目含义介绍

watch

help
打印所有命令,介绍命令的使用
cat
打印文件内容
grep
使用方法例如:sysprop | grep java 查看系统信息时过滤只显示包含 java 的信息 显示信息时同时显示行号:sysprop | grep java -n 控制显示的最大行数:sysprop | grep java -m 10

sysprop
显示 jvm 状态信息 查看 java home 路径:sysprop java.home 修改显示的键值对:sysprop user.country US - 将当前服务器所属地区修改为 US
pwd
显示当前路径
reset

version
显示 arthas 版本号
history
显示执行过的 arthas 命令
keymap
显示 arthas 快捷键
sysenv

vmoption

getstatic
获取静态属性值

ognl

下面调用静态方法在 cmd 中显示的是返回值,不是方法执行的结果

sc - search class
查看加载的类的信息

sm - search method
查看加载的方法的信息

jad
反编译出源码。jad 命令后是:包名+入口类名称,语法介绍:


使用 jad + mc 可以实现程序的热更新效果

mc
Memory Compiler - 在内存中把源代码编译成字节码文件
redifine
把新生成的字节码文件在内存中执行

dump

classloader


monitor


watch




观察方法执行前后属性的变化,执行案例


trace
对方法内部执行逻辑进行跟踪,统计其中调用的其他方法的耗时,显示红色字体是耗时最大的方法


打印执行超过1ms的run方法的执行

stack

最简单使用案例

添加条件变量的跟踪

条件变量中使用耗时

tt



显示结果的解释:




cls - 清理屏幕
退出

option - arthas配置
cmd中输入 options查看下图的命令

案例
火焰图
启动:profiler start 列出命令 profiler支持的所有事件:profiler list 查看至今已经获取的样本数量:profiler getSamples 显示命令 profiler 已经运行的时长:profiler status 停止获取样本:profiler stop。执行该命令会自动生成默认格式是 svg 的图片 - 火焰图 如果要生成 html 格式的文件则:profiler stop --format html

火焰图含义:

使用总结
一般首先使用 trace 跟踪指定类的指定方法,查看最耗时的方法为目标方法。然后通过 watch 查看入参以及返回结果
