Alibaba_Arthus问题排查工具

一、Arthus工具

请参看如下连接:https://blog.youkuaiyun.com/u013735734/article/details/102930307

官方文档:https://gitee.com/arthas/arthas#dashboard


命令集合

在这里插入图片描述

初始化

wget https://arthas.aliyun.com/arthas-boot.jar
java -jar arthas-boot.jar

通过以上命令安装authus并启动
在这里插入图片描述

dashboard命令

运行dashboard命令
在这里插入图片描述

在这里插入图片描述
可以看到青年代用的是复制算法;
而老年代用的是标记整理算法;(中间缺少的一行是老年代gc的次数,看一下下面的,Scavenge是对于青年代的复制算法)
在这里插入图片描述

thread命令——查看某线程的状态

通过thread命令查看当前线程的栈:
在这里插入图片描述

sc命令——JVM中已经加载的类

通过sc命令获取JVM中已经加载的类:
在这里插入图片描述

jad命令——反编译

通过jad命令能反编译代码
在这里插入图片描述

watch命令——查看当前函数的参数、返回值、异常

通过watch命令查看函数的参数/返回值/异常信息:
在这里插入图片描述

classLoader命令——查看当前类的类加载器

也可以用classLoader命令查看当前类加载器‘’

二、问题

定位线程死锁

 private Object obj1 = new Object();
 private Object obj2 = new Object();
		new Thread(() -> {
            synchronized (obj1) {
                try {
                    Thread.sleep(5000);
                } catch (InterruptedException e) {}
                synchronized (obj2) {
                    System.out.println("[dead]执行内容111...");
                }
            }
        }).start();

        new Thread(() -> {
            synchronized (obj2) {
                synchronized (obj1) {
                    System.out.println("[dead]执行内容222...");
                }
            }
        }).start();

直接采用thread命令,但是thread -b查看被阻塞的线程。
在这里插入图片描述

CPU利用率高

  1. 首先thread命令查看线程
    在这里插入图片描述
  2. 得到线程号码为12号
    在这里插入图片描述
  3. 直接找到了哪个方法
    在这里插入图片描述

查看线程状态

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

统计程序耗时

使用 trace 命令可以跟踪统计方法耗时
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值