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

相关推荐
上进小菜猪2 小时前
把 KES 集群交给 Kubernetes 的九十天:一个 DBA 的试用实录
后端
星空3 小时前
金蝶苍穹build.gradle配置
java·build.gradle
智能运维指南3 小时前
代码管理软件如何融入 DevOps 工具链?全链路联通的 5 个关键点
运维·devops·信创适配·嘉为蓝鲸
两点王爷3 小时前
PostgreSQL 常用 SQL 语句与 GIS 相关函数详解
数据库·后端
充电zcx3 小时前
Linux:4:开发工具详解
linux·运维·服务器
考虑考虑4 小时前
Springboot环境变量占位符语法
spring boot·后端·spring
步行cgn5 小时前
Spring 基于 XML 的自动装配:byName 详解
java·后端·spring
大帅点兵6 小时前
Apache Ant 1.9.9 完整讲解
java
LuTshoes6 小时前
spring ai 实战 手搓 PlaneExecuteAgent
java·人工智能·spring·ai
这料鬼有毒6 小时前
二刷hot100-73.矩阵置零
java