Arthas--使用手册+实例案例

1、背景

公司最近针对一些反应慢的接口进行梳理,着重要求处理一些耗时代码段(中间穿插第三方调用),针对这些痛点,原始方法为打log日志进行日志分析,逐个排查后统一修复,这种做法的缺点是:耗时、效率低,故使用阿里开源Arthas进行分析,大大提高效率

2、什么是 Arthas

Arthas 是阿里巴巴开源java诊断工具,他能帮你解决一些棘手问题:
1、这个类是从哪个jar包加载,为什么会抛出Exception
2、我的代码到底有没有发布成功,总是和运维扯皮
3、如何进行jvm实时监控
4、一些线上bug是否只能通过发包的形式解决
5、线上遇到一些用户问题,线上无法debug,现在无法复现,是否能够全局的审视此类问题

3、下载并启动

1、curl -O https://arthas.aliyun.com/arthas-boot.jar
2、java -jar arthas-boot.jar
### 如果端口被占用 修改启动命令
java -jar arthas-boot.jar --telnet-port 9998 --http-port -1
### 也可以指定目标ip
java -jar arthas-boot.jar telnet-port 9998 --http-port -1 --target-ip 127.0.0.1

1、arthas 启动会自动扫描可监控j进程
在这里插入图片描述
2、输入需要监控的序号
在这里插入图片描述
浏览器控制
在这里插入图片描述

3、打开日志保存

### 由于生产监控日志量比较大,建议打开日志保存,以便进行分析
options save-result true
### 日志保存位置
find . -name "arthas-cache"

4、常用命令

4.1、dashboard

###要标明次数 否则一直会滚动显示
dashboard -n 1

在这里插入图片描述

4.2 thread 命令

### 查询所有线程
thread -all
### 查询阻塞线程
thread -b 
### 查询前3cpu最耗时线程
thread -n 3
### 查询线程id
thread 线程id
### 查询状态线程
thread state runable/block/time_await

4.3 常用系统命令

参数参数描述
jvmTHREAD相关
COUNT: JVM当前活跃的线程数
DAEMON-COUNT: JVM当前活跃的守护线程数
PEAK-COUNT: 从JVM启动开始曾经活着的最大线程数
STARTED-COUNT: 从JVM启动开始总共启动过的线程次数
DEADLOCK-COUNT: JVM当前死锁的线程数
文件描述符相关
MAX-FILE-DESCRIPTOR-COUNT:JVM进程最大可以打开的文件描述符数
OPEN-FILE-DESCRIPTOR-COUNT:JVM当前打开的文件描述符数
sysprop查看系统属性
sysenv查看当前JVM的环境属性(System Environment Variables)
vmoption查看,更新VM诊断相关的参数
getstatic查看静态类属性
ognl可替代getstatic

4.4、其他参数

在这里插入图片描述

5、实际案例

5.1 创建空循环线程,此时该线程会一直占用cpu

在这里插入图片描述

5.2 dashboard -n 3 查询jvm详情

在这里插入图片描述
从中发现,有一个cpu使用率异常

输入 thread 72 定位 异常位置

在这里插入图片描述

输入 jad 及异常代码位置 jad com.tm.provider.service.impl.LoginServiceImpl

在这里插入图片描述

当服务执行时,想要知道某一函数执行效率问题

trace 类地址 类函数

在这里插入图片描述
可以匹配出最耗时函数,同时也可以去除jdk函数

trace  类路径 函数名 -skipJDKMethod true

watch 函数

### 让你能方便的观察到指定函数的调用情况。能观察到的范围为:返回值、抛出异常、入参,通过编写 OGNL 表达式进行对应变量的查看。
watch 类名 函数 -x 2 --打印指定深度

tt 函数

### 方法执行数据的时空隧道,记录下指定方法每次调用的入参和返回信息,并能对这些不同的时间下调用进行观测
tt -t 类名 函数名

参考地址: https://www.cnblogs.com/wwjj4811/p/16588261.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值