线上排查问题神器-Arthas应用(一)-dashboard仪表盘

1,177 阅读3分钟

「这是我参与2022首次更文挑战的第4天,活动详情查看:2022首次更文挑战

下面就来看看Arthas的常用功能的用法吧

1、Arthas的安装及启动

其实说到这快,不得不提的是,之前我一直因为arthas是一个软件,要启动,界面操作。当时我就想,要是这样,在线上安装一个单独的应用,公司肯定不同意啊~~~,研究完才发现,原来Arthas就是一个jar包。运行起来就是用java -jar 就可以。

1) 安装

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

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

也可以在浏览器直接访问alibaba.github.io/arthas/arth…,等待下载成功后,上传到Linux服务器上。

2) 启动

执行命令就可以启动了

java -jar arthas-boot.jar

启动成功可以看到如下界面:

image

然后找到你想监控的进程,输入前面对应的编号,就可以开启进行监控模式了。比如我要看4

image

看到这个就表示,进入应用监听成功

2、dashboard仪表盘--查询整体项目运行情况

执行命令

dashboard

image

这里面一共有三块

1)线程信息

我们可以看到当前进程下所有的线程信息。其中第13,14号线程当前处于BLOCKED阻塞状态,阻塞时间也可以看到。通过这个一目了然,当前有两个线程是有问题的,处于阻塞状态GC线程有6个。

2)内存信息

内存信息包含三个部分:堆空间信息、非堆空间信息和GC垃圾收集信息

堆空间信息

  • g1_eden_space: Eden区空间使用情况
  • g1_survivor_space: Survivor区空间使用情况
  • g1_old_gen: Old老年代空间使用情况

非堆空间信息

  • codeheap_'non-nmethods': 非方法代码堆大小
  • metaspace: 元数据空间使用情况
  • codeheap_'profiled_nmethods':
  • compressed_class_space: 压缩类空间使用情况

GC垃圾收集信息

  • gc.g1_young_generation.count:新生代gc的数量
  • gc.g1_young_generation.time(ms)新生代gc的耗时
  • gc.g1_old_generation.count: 老年代gc的数量
  • gc.g1_old_generation.time(ms):老年代gc的耗时

3) 运行时信息

  • os.name:当前使用的操作系统 Mac OS X
  • os.version :操作系统的版本号 10.16
  • java.version:java版本号 11.0.2
  • java.home:java根目录 /Library/Java/JavaVirtualMachines/jdk-11.0.2.jdk/Contents/Home
  • systemload.average:系统cpu负载平均值4.43

load average值的含义

单核处理器

假设我们的系统是单CPU单内核的,把它比喻成是一条单向马路,把CPU任务比作汽车。当车不多的时候,load <1;当车占满整个 马路的时候 load=1;当马路都站满了,而且马路外还堆满了汽车的时候,load>1

img Load < 1

img Load = 1 img Load >1

多核处理器

我们经常会发现服务器Load > 1但是运行仍然不错,那是因为服务器是多核处理器(Multi-core)。

假设我们服务器CPU是2核,那么将意味我们拥有2条马路,我们的Load = 2时,所有马路都跑满车辆。

imgLoad = 2时马路都跑满了

  • processors : 处理器个数 8
  • timestamp/uptime:采集的时间戳Fri Jan 07 11:36:12 CST 2022/2349s

通过仪表盘,我们能从整体了解当前线程的运行健康状况