Arthas使用

Arthas

下载与安装

联网

官网中的快速开始是需要联网的,如果网络允许,则可以直接根据官网的快速开始执行命令

离线

官网中的手动安装页面提供了安装包下载路径与安装步骤。
下载xxx-bin.zip,直接解压,在执行安装脚本之前,需要先卸载之前安装的数据。
安装脚本:as.sh 或者as.bat
个人Windows安装流程:
1、在github上下载arthas-bin.zip
2、解压zip文件、执行as.bat
3、进入cmd,执行java -jar arthas-boot.jar
Linux安装流程:
1、下载arthas-bin.zip
2、解压zip文件
3、可以执行as.sh文件启动,也可以执行java -jar arthas-boot.jar
4、启动后,arthas内部会使用jps命令列出当前设备上的java进程(所以要求当前环境下有jps命令),整个启动日志如下

root@localhost:/xx/java/arthas# /xx/java/jdk1.8.0_144/bin/java -jar arthas-boot.jar
[INFO] JAVA_HOME: /xx/java/jdk1.8.0_144/jre
[INFO] arthas-boot version: 4.0.4
[INFO] Process 20986 already using port 3658
[INFO] Process 20986 already using port 8563
[INFO] Found existing java process, please choose one and input the serial number of the process, eg : 1. Then hit ENTER.
* [1]: 20986 /xx/java/xx/xx1.jar
  [2]: 15540 /xx/java/xx/xx2.jar
  [3]: 16647 /xx/java/xx/xx3.jar
1
[INFO] arthas home: /xx/java/arthas
[INFO] The target process already listen port 3658, skip attach.
[INFO] arthas-client connect 127.0.0.1 3658
  ,---.  ,------. ,--------.,--.  ,--.  ,---.   ,---.
 /  O  \ |  .--. ''--.  .--'|  '--'  | /  O  \ '   .-'
|  .-.  ||  '--'.'   |  |   |  .--.  ||  .-.  |`.  `-.
|  | |  ||  |\  \    |  |   |  |  |  ||  | |  |.-'    |
`--' `--'`--' '--'   `--'   `--'  `--'`--' `--'`-----'

wiki       https://arthas.aliyun.com/doc
tutorials  https://arthas.aliyun.com/doc/arthas-tutorials.html
version    4.0.4
main_class
pid        20986
time       2024-12-24 11:14:43.483

[arthas@20986]$

重要功能

动态调整项目日志级别

使用logger命令修改系统的日志级别,立马生效,有助于排除问题。不需要修改配置文件中的日志级别,再重启项目,避免出现重启后问题无法复现

trace命令

详情见官网
方法内部调用路径,并输出方法路径上的每个节点上耗时。可以用于监控方法执行的时间,可以根据情况分析如何调优代码
进入arthas后

# arthas提供了tab提示
trace 类名 方法名

# 执行trace命令后,去执行对应的业务,arthas将业务中调用到该方法的执行时间打印在该窗口

profiler命令

可以用于分析CPU占用
进入arthas后

# 开启profiler
profiler start

# ... 开启后,就可以操作你想监控的业务,业务执行后,执行关闭命令,指定文件路径
# /xx/profiler.html则为火焰图的路径
profiler stop --file /xx/profiler.html

thread命令

可以分析线程的状态,占用的CPU百分比
详情见官网

实践

在《Linux监控java进程内存与CPU使用情况》中监控了业务的内存与CPU占用,其中对于高CPU占用业务,使用trace 或者 profiler命令去分析具体是哪一部分导致的高CPU。
1、trace:从controller、service等接口一步步找到业务时间长的部分,再分析是否正常、是否能优化。
2、profiler:监控对应业务的火焰图:
对于火焰图的理解可参考链接
颜色是随机分布的,纵轴是堆栈的深度。结果就是要重点关注横轴长的部分,某一部分越宽代表被抽样的次数越多,执行时间相对较长。
找到宽度宽的方法,应该与trace中的结果是相呼应的。
如果是合理的,那么可能就需要提升设备性能或者进行接口限流(后续再整理相关方案)。

其他

上述只是简单的使用了Arthas中的部分命令,官网中提供了丰富的命令,例如jap(反编译class文件), dashboard(显示当前 tomcat 的实时信息)等等,根据需要进行学习与使用

你可能感兴趣的:(运维,java,运维)