Arthas
阿里巴巴开源的Java诊断工具;追踪方法执行链、反编译、监控JVM状态
在线安装
使用
1. trace 跟踪调用链
解决痛点:定位问题根据日志推理分析,方法出入参不可见,分支判断太多情况下 定位很慢,分析出可能有问题的点还要多次验证才能确认问题点。使用trace 一行命令即可获取方法执行链,对照代码稍加分析即可准确定位问题。
trace 类全限定名 方法名 [-n 1]
# 类全限定名获取参照下图2
效果展示:打印方法执行链,快速确定分支及执行逻辑
tips:IDEA获取方法全限定名
2. watch 查看方法出入参
解决痛点:很多时候某个方法出入参没有打印,阻塞问题定位,需要添加日志查看出入参或者验证出入参是否预期值 -> 再推包部署 -> 验证完之后再删除日志 -> 重新提交代码。使用Arthas一行命令即可,避免阻塞及推包部署过程的麻烦,极大提升效率。
watch 类全限定名 方法名 '{params,returnObj}' -x 4
- 还可以根据指定参数过滤请求
# 观察用户ID为9的请求
watch 类全限定名 getUser "{params,returnObj}" "params[1]==9" -x 2
getUser方法如下
private User getuser(String name, Integer id){
}
3. jad 反编译
解决痛点:修改的代码没有生效,不知道是逻辑问题还是修改的代码没有部署成功的时候,可以通过jad 反编译快速验证。
在线安装
# 1. 下载 (内网使用离线安装)
curl -O "https://alibaba.github.io/arthas/arthas-boot.jar"
# 位置: /root/.arthas/lib/3.6.7/arthas
# 2.检测java进程 (需要与目标进程启动用户相同)
java -jar arthas-boot.jar --repo-mirror aliyun --use-http
# --repo-mirror aliyun --use-http 使用阿里镜像(提速)
# 首次选择会下载依赖,并进入arthas
启动成功
更多
JVM监控等更多使用见官网介绍