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 有性能开销,排查完毕后及时 stopreset
静态方法 同样适用,target 为 null
重载方法 可通过指定参数类型精确匹配:getUser(String, int)
输入
arduino 复制代码
 watch org.luban.module.base.auth.controller.UserController getUsers "{params, returnObj}" -x 3

输出结果为

总结

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

相关推荐
奶油喜多多16 分钟前
教育小程序定制开发指南:从需求梳理到上线运维
运维·小程序
xcl092517 分钟前
从零开发流浪宠物领养平台:技术选型与核心模块设计
java·spring boot·宠物
zr52685544720 分钟前
光电交换机-三格电子
运维·服务器·网络
Dovis(誓平步青云)27 分钟前
模拟器横评:电脑上看小说、追短剧用什么模拟器?MuMu、雷电、腾讯手游助手实测
android·java·服务器·前端·javascript·电脑
宝桥南山28 分钟前
GitHub Copilot - 尝试配置和使用一下Microsoft Fabric Core MCP Server
运维·microsoft·ai·微软·powerbi·fabric
SDWAN_Cheap33 分钟前
什么是子网掩码?/24、/16这些数字代表什么?
运维·服务器
李昊哲小课35 分钟前
Spring Boot 4 旅游主题实战教程 阶段三:数据持久化
spring boot·后端·mybatis·旅游
青山科技分享38 分钟前
跨境电商AI Agent哪个比较好用?剖析自动化运营工具的落地价值
运维·人工智能·自动化·ai智能体
JienDa38 分钟前
我做了一款不依赖 AI 的离线传统术数排盘工具:Electron、Vue3 与 Java 17 的完整实践
java·人工智能·electron