arthas使用

前言

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还有许多功能可以使用,可以方便线上调试

相关推荐
Decay__22 分钟前
05_MySQL 常用 SQL 大全 —— 诊断、管理、优化辅助 SQL 与三大系统库速查
运维·数据库·sql·mysql·架构
贞明电子2 小时前
工业三色报警灯怎么接入项目系统?开关量与RS485控制应用指南
运维·网络·微信公众平台·贞明电子
学长毕设3 小时前
基于SpringBoot的实验室资产管理系统
java·spring boot·后端
万联WANFLOW3 小时前
海外网络故障怎么排查?Cloudflare 三季度断网报告解读与 mtr 实战
运维·网络·故障分析
zzu123zsw4 小时前
从臃肿的模板调用到声明式契约:深入 UniHttp 动态代理与多渠道生命周期扩展
java·spring boot·microsoft·unihttp
Ruiery5 小时前
Linux 6.6内核内存管理深度解析(十三):slab/slub 分配器
linux·运维·服务器
源码集结号5 小时前
云诊所门诊系统源码,基于SpringBoot+Vue.js架构,支持多租户设计与Docker容器化部署
java·spring boot·源码·医院信息系统·门诊系统·诊所系统
努力的小雨5 小时前
给 AI 眼镜开发应用有多难?我从零做了一个陪练,还上架了
后端
论文复现现场5 小时前
WRF、FEA 能用 L40S 加速吗?求解器检查、断点恢复与长期运行
java·数据库·算法·wrf·有限元分析·gpu计算·断点续算
啃瓜子的松鼠6 小时前
泛微OAe9-后端二开异步调用
java