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

前言:

上一篇文章 Arthas(阿尔萨斯) – 阿里在线诊断神器(一) 中介绍了 ttsmscjad 几个常用命令详解,今天我们继续学习其他命令。

开始学习

先来几个简单常见的命令

dashboard

当前系统的实时数据面板,可以显示 JVM 内存使用情况,java 版本信息,
实时数据信息

thread

常见参数

-i
指定时间内采集

thread -i 2000 效果和 thread 类似,但是是一段时间数据

时间段采集

-n
找出 cpu 使用率最高的几个线程

例子:

thread -n 3

使用率最高的 3个线程
-b
找到持有锁的线程,有时候请求后,一直卡住,那么可以使用该方式去查找持有锁的线程。注意该方式不支持 显示锁也就是 lock 接口的。

例子:

thread -b

找持有锁线程

jvm

输出 jvm 相关信息,包括加载类的路径,启动类路径,加载类个数等等,好多,就不截图了。

trace 命令

该命令有点强,用于查看接口调用时间,可以找出接口在调用不同方法时所花费的时间,可以用作性能调优。
常用参数:

-n
有时候请求量太大,我们不需要每个请求调用时间,那么可以使用这个参数,指定次数调用后结束。

trace *TestController abc -n 2

指定请求次数结束
我们也可以进行筛选,比如我们要找出请求时间大于 10ms 的线程,如下命令即可。

trace *TestController abc ‘#cost>10’

watch 命令

常用参数:
-b
在调用方法前观察这个方法,可以看到传入的参数值。

watch -b *TestController abc params

方法调用前观察

-e
观察抛出异常时传入参数

watch -e *TestController abc params

抛出异常时观察

-f
方法调用完成,返回对象是观察具体数据。

watch -f *TestController abc params

调用完成的观察情况
假设我们想观察详细一些怎么做呢?
先看看我们抛出异常的情况,只是看异常,不看具体堆栈

watch *TestController abc ‘{params,target,throwExp}’

抛出异常
查看具体堆栈的在后面加 -x 2 ,意思是输出 2 层的结果,默认情况下我们只输出异常(也是就默认 -x 1),就像上图。

watch *TestController abc ‘{params,target,throwExp}’ -x 2

2级层次遍历输入结果
可以尝试多种情况,比如将所有参数,返回结果都输出

watch *TestController abc ‘{params,target,returnObj}’ -x 2

结果输出
这里演示的差不多了,就不继续了,还有可以一个一个查看,可以去动手实践。

stack 命令

该命令霸道,看源码执行方式必备呀。比如:我们看到一个核心方法,但是发现这个方法会被执行的路径很多,我们很难找到到底哪个执行了,那这个命令就体现他强大之处了。

常用命令:
-n
指定结束次数,达到次数则自动退出,不继续监听。

stack *Users setName -n 1

上面那个命令,用我们一个 Users 类的 setName 方法来查看,发现就是我们 TestController 调用了。
找到被谁调用

小结:

今天的命令学习到这里,Arthas 还有更强大的功能,我们将在后续继续写下一篇。下一篇的命令,在工作中我们可能用的更多,也更实用。

如果想要深入学习,可以去官网学习喔 – https://alibaba.github.io/arthas/tt.html

有兴趣的同学可以关注公众号一起学习!
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值