Arthas性能监控

前言

当我们在做线上压测时,有个问题就是很多工具在线上不方便用,如jprofiler,因为线上环境比较谨慎,也不太方面加一堆配置参数。那么这里我们推荐使用Arthas这个工具

Arthas工具介绍

Arthas是阿里巴巴开源的性能分析神器。Arthas能为你做什么事情呢?我们来看一下官网的介绍。官网地址: https://alibaba.github.io/arthas/index.html.

当你遇到一下类似的问题而束手无策的时候,Arthas可以帮你解决:

  1. 这个类从哪个jar包加载的?为什么会报各种各类相关的Exception?
  2. 我改的代码为什么没有执行到?难道我没有commit?分支搞错了?
  3. 遇到问题无法线上debug,难道只能通过添加日志在重新发布吗?
  4. 线上遇到某个用户的数据有问题,但是线上同样无法debug,线下无法重现!
  5. 是否有一个全局视角来查看系统运行状况?
  6. 有什么办法可以监控到JVM的实施运行状态?

Arthas 支持JDK6+,支持Linux、Windows、Mac,采用命令行交互模式,同时提供丰富的Tab自动补全功能,进一步方便进行问题的定位和分析。

下载1. 这个类从哪个jar包加载的?为什么会报各种各类相关的Exception?
2. 我改的代码为什么没有执行到?难道我没有commit?分支搞错了?
3. 遇到问题无法线上debug,难道只能通过添加日志在重新发布吗?
4. 线上遇到某个用户的数据有问题,但是线上同样无法debug,线下无法重现!
5. 是否有一个全局视角来查看系统运行状况?
6. 有什么办法可以监控到JVM的实施运行状态?

Arthas 支持JDK6+,支持Linux、Windows、Mac,采用命令行交互模式,同时提供丰富的Tab自动补全功能,进一步方便进行问题的定位和分析。

下载Arthas

可以直接在 Linux 上通过命令下载

wget https://alibaba.github.io/arthas/arthas-boot.jar

或者也可以再浏览器直接下载jar包,等待下载成功后,上传到 Linux 服务器上。

https://alibaba.github.io/arthas/arthas-boot.jar

启动 arthas 工具

主要使用arthas需要安装jdk环境。

安装成功之后,执行如下命令启动 arthas

java -jar arthas-boot.jar

执行成功后,arthas 提供了一种命令行方式的交互方式,arthas 会检测当前服务器上的
Java 进程,并将进程列表展示出来,用户输入对应的编号(1、2、3、4…)进行选择,然
后回车(见红色框,进程[2]就是 tomcat 进程)。
在这里插入图片描述
第一次使用arthas需要自动下载一些依赖包,等待下载完成,就会进入到arthas提供的命令行界面。

在这里插入图片描述
整体dashboard数据

在arthas的命令行界面,输入 dashboard在这里插入图片描述
现在我们可以看到一个实时的监控界面。我们可以在第一栏看到线程的状态、优先级以及占用哪个线程占用的cpu比较高。

那么我们可以通过这个图标看到有没有线程当前处于阻塞、或者TIME_WATING。有时候出现cpu比较高的场景,我们可以通过这里看到具体是哪一个线程占用的cpu比较高。我们找到这个线程,就可以通过 jstat查看到该进程当前所在做的事情。

但是大家这里需要注意的是,这里的cpu并不是占用了我们操作系统多少cpu使用率,这里指的是我们这个进程占了多少cpu,其中某一个线程占了该进程的百分之多少。

在这里插入图片描述

第二个区域展示的内存,我们可以看到堆内存总共使用了多少、一共有多少内存、最大内存是多少,以及内存占用的百分比情况。

所以这个dashboard可以帮我们检测线程和内存的总体使用情况。

查看线程监控

我们前面 dashboard 只是看了线程的大体情况,如果说我们想要看线程的具体情况,应该怎么看呢?

Arthas 提供了如下参数,可以看到线程的具体信息。

常用参数:
输入thread会显示所有线程的状态信息 
输入thread -n 3会显示当前最忙的3个线程,可以用来排查线程CPU消耗 
输入thread -b 会显示当前处于BLOCKED状态的线程,可以排查线程锁的问题 

thread
在这里插入图片描述
thread -n 3

这个命令可以把占用cpu消耗最高的线程的堆栈信息打印出来,可以用来排查线程CPU消耗
在这里插入图片描述
thread -b

这个命令可以抓到当前处于BLOCKED状态的线程,可以排查线程锁的问题 ,因为目前我没有阻塞的线程,所有没有。
在这里插入图片描述
jvm监控

输入jvm,查看jvm详细的性能数据
在这里插入图片描述

函数耗时监控

通常说一个接口性能不好,其实就是接口响应时间比较长造成的,具体代码中哪个函数耗时比较长呢?可以使用trace功能来监控一下

trace 类名 函数 

这个命令可以看到压测具体那一个函数耗时时间最长,接下来我们就可以去对代码进行进一步分析,然后再进行优化。

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

七月的小尾巴

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值