前言
arthas是线上调试产品,可以通过该工具,查看业务的问题,比如入参、出参以及监控等问题
arthas使用
arthas下载
可以通过该地址下载arthas
arduino
https://arthas.aliyun.com/doc/
arthas使用
解压之后,文件夹下的东西为

arthas启动
直接通过该命令启动arthas
java -jar arthas-boot.jar
如果是容器的话,可以将该文件夹复制到容器里面启动,或者打包镜像的话,将文件一起打包到镜像中,
bash
docker cp arthas文件夹路径 容器id:/home/arthas
arthas使用
启动之后,会输出java进程
想进入哪个进程,就输入对应的数字,然后回车就行,输出结果为

arthas命令行
dashboard
可以使用该命令查看实时数据面板

watch查看入参和出参
arduino
watch com.example.UserService getUser "{params, returnObj}" -x 2
在 Arthas 中,查看方法参数最常用的是 watch 命令。以下是几种核心用法:
1. 基础用法:查看入参和返回值
bash
编辑
arduino
1watch com.example.UserService getUser "{params, returnObj}" -x 2
params:方法入参数组returnObj:返回值-x 2:关键参数,指定对象展开层级(默认1层,建议设为2-3以查看嵌套对象内容)
2. 只查看入参
bash
编辑
arduino
1watch com.example.UserService getUser "{params}" -x 3
3. 按条件过滤参数
bash
编辑
bash
1# 仅当第一个参数等于指定值时输出
2watch com.example.UserService getUser "{params, returnObj}" "params[0]=='admin'" -x 2
3
4# 仅当参数数量大于2时输出
5watch com.example.UserService getUser "{params}" "params.length>2" -x 2
4. 同时查看入参、返回值、异常和调用者
bash
编辑
arduino
1watch com.example.UserService getUser "{params, returnObj, throwExp, target}" -x 2 -e -s
-e:仅在方法抛出异常后触发-s:仅在方法成功返回后触发target:当前对象实例(可访问成员变量)throwExp:异常对象
5. 使用 tt 命令记录并回放参数
适合需要事后分析的场景:
bash
编辑
yaml
1# 记录方法调用
2tt -t com.example.UserService getUser
3
4# 查看所有记录
5tt -l
6
7# 查看某次调用的详细参数(INDEX为记录编号)
8tt -i 1000 -p
⚠️ 注意事项
表格
下载为表格
导出为图片
| 要点 | 说明 |
|---|---|
| 类名匹配 | 支持通配符,如 com.example.*Service get* |
| 展开深度 | -x 过大可能导致输出过多或OOM,生产环境建议 ≤3 |
| 性能影响 | watch 有性能开销,排查完毕后及时 stop 或 reset |
| 静态方法 | 同样适用,target 为 null |
| 重载方法 | 可通过指定参数类型精确匹配:getUser(String, int) |
| 输入 |
arduino
watch org.luban.module.base.auth.controller.UserController getUsers "{params, returnObj}" -x 3
输出结果为

总结
arthas还有许多功能可以使用,可以方便线上调试