「这是我参与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
启动成功可以看到如下界面:
然后找到你想监控的进程,输入前面对应的编号,就可以开启进行监控模式了。比如我要看4
看到这个就表示,进入应用监听成功
2、dashboard仪表盘--查询整体项目运行情况
执行命令
dashboard
这里面一共有三块
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
Load < 1
Load = 1
Load >1
多核处理器
我们经常会发现服务器Load > 1但是运行仍然不错,那是因为服务器是多核处理器(Multi-core)。
假设我们服务器CPU是2核,那么将意味我们拥有2条马路,我们的Load = 2时,所有马路都跑满车辆。
Load = 2时马路都跑满了
- processors : 处理器个数 8
- timestamp/uptime:采集的时间戳Fri Jan 07 11:36:12 CST 2022/2349s
通过仪表盘,我们能从整体了解当前线程的运行健康状况