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

Arthas 是啥?

Arthas 是Alibaba开源的Java诊断工具,深受开发者喜爱。在线排查问题,无需重启;动态跟踪Java代码;实时监控JVM状态。
Arthas 支持JDK 6+,支持Linux/Mac/Windows,采用命令行交互模式,同时提供丰富的 Tab 自动补全功能,进一步方便进行问题的定位和诊断。(以上介绍来自官网)

开始学习

首先,我们随便来一个测试项目,代码如下:

@RestController
public class TestController {

    @GetMapping(value = "test")
    public Users abc(Integer integer) {
        if (integer == 0) {
            throw new IllegalArgumentException("参数 0 异常");
        }
        Users users = new Users();
        users.setName("Gentle");
        users.setAge(integer);
        return users;
    }
}
@Data
class Users {
    private String name;
    private Integer age;
}

如何进行 arthas 操作界面就不介绍了,下面我们开始相关命令学习。

初次学习,输入一下 help ,我们可以看到有很多命令,如下图:
arthas 命令

sc 命令

命令介绍:
该命令是 Search-Class 英文的缩写,用于查看JVM已加载的类信息。

常用参数详情
-d
参数用于输出详细的类相关信息(类全限定名,存放路径,接口,注解,继承父类,类加载器等),支持模糊查询

-f
参数需要配合 -d 命令一起使用, 在上述类信息中加入字段信息,包括权限、类型、名字。

例子(使用模糊的方式):

sc -d -f *TestController

类+字段信息
其他参数:
-E
开启正则表达式匹配,默认为通配符匹配

-c
类名表达式匹配

sm 命令

命令介绍:
该命令是 Search-Method 英文的缩写,用于查看已加载类的方法信息.

常用参数
-d
方法详情

例子:(模糊匹配找到 TestController 下的 abc 方法详情)

sc -d *TestController abc

abc方法详情

非常用参数
-E
开启正则表达式匹配,默认为通配符匹配

-c
类名表达式匹配

jad 命令

命令介绍:
该命令可以反编译出已加载类的源代码,如果没有线下环境,我们可以在线上查看到底哪行代码出问题。

例子:

jad *TestController

反编译

tt 命令

tt 命令有点强,使用该命令,会有一个记录表,请求来时,会将请求记录下来,可以进行重放(由 Arthas 启动线程请求)。

常用参数:
-t
开启方法监听,记录下 TestController 中方法 abc 的调用情况

tt -t *TestController abc

开启监听记录
接下来我们按 Q 或者 Ctrl+C 退出监听。

-i
i 是指 index 索引的意思,可以用来找出之前请求的信息。

tt -i 1003

请求详情

-l
找出列表所有请求

tt -l

记录的请求
-p
该之类用于重做一次调用,一般来说,前端调起请求后。结果你没看到,再次在前端调起太麻烦,那么可以使用该参数。

tt -i 1003 -p

上述 1003 是指索引,重新请求类似于 -i 输出消息,这里就不再截图了。

-n
指定抓取次数,达到次数后自动停止。

tt -t *TestController abc -n 3

指定次数
-w
用作输出信息,可以找出请求过的信息,参数、以及是否抛出异常。

找出正常返回对象、已经请求参数值

tt -i 1004 -w ‘{params[0], target, returnObj}’

正常请求
出现异常的线程,找出相关异常信息 (乱码是我输出的是中文,不需要理会)

tt -i 1009 -w ‘{params[0], target,throwExp}’

异常情况
如果我们发现异常,想看看什么异常,怎么办呢?

tt -i 1009 -w throwExp

出现异常

小结:

Arthas 阶段入门一就先写到这里了,后续会继续补充其他内容学习,有兴趣的可以参考官方网站进行学习。https://alibaba.github.io/arthas/tt.html

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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值