Arthas简单使用

本文介绍了在遇到线上Bug时如何使用Arthas进行问题排查。通过下载安装Arthas,启动并监控服务器上的应用,讲解了`dashboard`、`thread`、`jad`等常用命令的使用,帮助开发者实时查看线程状态、定位阻塞问题和查看源码,提供了一种有效的线上问题诊断工具。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

背景

上周在工作中遇到了一个bug,在服务器上可以复现,但是本地调试无法复现。于是想到了arthas,觉得有必要简单写一篇博客记录下arthas的简单使用。

安装

1、下载Arthas

直接在服务器上:
wget https://alibaba.github.io/arthas/arthas-boot.jar
执行完毕后会在相当于在当前路径下载并且安装了arthas,如果安装成功的话当前路径下会有一个arthas-boot.jar的jar包。

2、启动

在arthas安装的路径下:
java -jar arthas-boot.jar

就是启动jar包的方式,正常启动的话会像下图的样式:
在这里插入图片描述
出现了当前服务器上所有在运行的jar,输入要监控的jar的序号,比如20015的话就输入5,然后回车,出现如下界面:
在这里插入图片描述
这个样式就相当于正常进入到了arthas,并且监控到了20015服务。

3、常用命令
3.1、dashboard

当前系统的实时数据面板,相当于监控大盘,如下图
在这里插入图片描述
可以注意到上面显示了每一个线程的ID、名称、所属group、优先级、当前状态、占用CPU百分比等。这里线程状态比较重要,如果是阻塞状态的话会直接显示BLOCKED。

3.2、thread

和dashboard不同的是,只显示线程相关信息,dashboard相当于啥都有。

3.3、thread id

打印指定id的线程的详细状态,如果是阻塞或等待状态的话会显示阻塞的位置,id就是dashboard或者thread面板里面线程的编号,比如thread 33,如下图:
在这里插入图片描述

3.4、thread -b

打印所有处于blocked状态的线程,并且会标注出来blocked的具体位置,感觉这个非常实用,如下图:
在这里插入图片描述

3.5、thread -n 5

打印出最消耗CPU的前5个线程

3.6、stack 全类名 方法名

查看某个方法的调用堆栈,比如,stack com.haozz.demo.DemoManager demoMethod

3.7、trace 全类名 方法名

查看某个方法的哪个子调用最慢,耗时最久的会用红色标注,

3.8、monitor 全类名 方法名

监控某个方法的调用统计,包括总调用次数,平均运行时间,成功率等信息

3.9、jad 全类名

反编译class,查看源码

题外话,我在使用上面3.5、3.6、3.7这三个命令的时候发现,如果某个方法中有一个子方法报错了,那么这个方法的堆栈信息也是打不出来的,但是报错的子方法之前的子方法的堆栈是可以打出来。不知道是不是我理解的不太对,但是一句这一点也可以定位到问题的点。

关于arthas的文章有很多,这篇也只是记录一些最基础简单的使用。最后放上Arthas的使用手册

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值