Arthas实际业务使用

Arthas实际业务使用,第1张

一.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 文档

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/919279.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-16
下一篇 2022-05-16

发表评论

登录后才能评论

评论列表(0条)

保存