Arthas实际业务使用

本文介绍了使用Arthas工具进行Java类的动态更新和日志跟踪的方法。通过retransform命令实现类的修改并即时生效,详细步骤包括反编译、编辑、编译和加载。同时,利用tt命令对特定方法的参数和返回值进行日志打印,便于调试。此外,还提到了dashboard实时面板和thread命令用于查看线程堆栈信息,帮助理解系统运行状态。
摘要由CSDN通过智能技术生成

一.retransform命令

可以对已有的类,进行修改后重新加载,并且立即生效

1. 反编译对应的类

jad --source-only com.xc.service.Impl.UserServiceImpl > /tmp/UserServiceImpl.java

2.编辑对应的tmp目录下的类,改动代码

3.查找要修改类的classLoaderHash值

sc -d *UserServiceImpl | grep classLoaderHash

4.编译修改后的类的成class文件

mc -c classLoaderHash值 /tmp/UserServiceImpl.java -d /tmp

mc --classLoaderClass org.springframework.boot.loader.LaunchedURLClassLoader /tmp/UserServiceImpl.java -d /tmp


上面四个步骤在实际使用中基本上没用,因为依赖的问题,会在编译成class文件的时候报错,可以本地idea修改后编译,在服务器建立好对应的包路径文件夹,复制class文件到文件夹内

5.加载修改后的类

retransform /tmp/com/xc/service/Impl/UserServiceImpl.class

6.查看修改过的类
retransform -l

7.回滚为原来的类

①先删除

指定id删除
retransform -d id

全部删除
retransform --deleteAll

②显示触发

retransform --classPattern com.xc.service.Impl.UserServiceImpl

二. tt命令打印日志

查看getCommonIcon方法的入参和返回参数

tt -t *UserServiceImpl queryAppletInfo

如果方法并发特别大,可以指定记录的次数,-n 3代表记录3次,3次之后自动退出该命令

tt -t *UserServiceImpl queryAppletInfo -n 3

如果想查询指定参数,第一个参数值为数值1的

tt -t *UserServiceImpl queryAppletInfo params[0]==1 -n 3

如果入参是对象的

tt -t *UserServiceImpl queryAppletInfo params[0].id==1 -n 3

字符串类型

tt -t *UserServiceImpl queryAppletInfo "params[0].name=='xc'.toString()" -n 3

查看具体的返回参数和入参

首先用tt -l 查看刚才记录过的请求,然后找到自己想看的请求的index

tt -i 1000 查看详情.

三.dashboard当前系统的实时面板

可以展示JVM内的所有运行的线程,并且会展示JVM堆内存的详情信息

四.thread命令查看jvm线程的堆栈信息

thread -i 线程id

展示在指定时间内最忙的几个线程  1000ms内3个最忙的

thread -n 3 -i 1000

其他命令可查看arthas文档: Arthas 用户文档 — Arthas 3.6.1 文档

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值