Arthas(阿尔萨斯) -- 阿里在线诊断神器(三)

前言:

前面两篇文章介绍了 Arthas 诊断神器的一些操作命令,今天我们继续学习 Arthas 其他命令。

开始学习

monitor 命令
该命令可以查看我们方法的调用,监控处方法成功,失败次数,以及 RT(响应时间)

常用参数

-c
指定监控输出结果

monitor *TestController abc -c 2

监控接口调用情况

监控项说明
timestamp时间戳
classJava类
method方法(构造方法、普通方法)
total调用次数
success成功次数
fail失败次数
rt平均RT
fail-rate失败率

mc 命令
内存编译器,编译.java文件生成.class。

正常操作

mc /tmp/Test.java

输出到指定目录

mc G:\ideaproject/springboot-arthas/src/main/java/com/example/springbootarthas/SpringbootArthasApplication.java -d /test

输出到指定目录

redefine 命令
加载外部的.class文件。比如有个需求,我们不能挺服务器修改类中某个方法返回值,那么我们可以使用用该命令去操作。
注意:
此命令可能会出现失败,如果是新增字段或方法,可能会导致加载失败

线上环境:将 class 类反编译到/tmp/文件夹下

jad --source-only com.example.demo.arthas.user.UserController > /tmp/UserController.java

编辑 UserController 文件,修改其内容。

vim /tmp/UserController.java

接下来我们需要知道到底是谁加载了 UserController

sc -d *UserController | grep classLoaderHash

查找classload
接下来就在内存中进行编译了,将文件编译成 class 文件到 /tmp 目录下

mc -c 5674cd4d /tmp/UserController.java -d /tmp

最后就是我们热更新代码了。。

redefine /tmp/com/example/demo/arthas/user/UserController.class

热更新

注意:
  • redefine 不允许新增加 field/method
  • redefine 对于正在跑的函数,没有退出是不能生效的

heapdump

常用参数:
-l
将堆信息输入到指定文件内

heapdump -l g:/test/heap.hprof

打印堆
ongl

调用静态方法输出结果

ognl ‘@java.lang.System@out.println(“hello”)’

调用静态方法
结果
后续待补充。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值