原创

Java诊断工具Arthas

温馨提示:
本文最后更新于 2024年07月21日,已超过 273 天没有更新。若文章内的图片失效(无法正常加载),请留言反馈或直接联系我

Arthas(阿尔萨斯)是一款阿里巴巴开源的Java诊断工具,它为开发和运维人员提供了强大的命令行界面,用于实时分析和诊断Java应用的运行状态。Arthas 提供了一系列实用的命令,可以帮助开发者快速定位问题,如查看类和方法的调用栈、监控JVM状态、分析线程和锁的竞争情况、查看对象引用关系等等。Arthas 的出现大大降低了Java应用的调试门槛,使得问题排查变得更加高效和直观。文档地址:https://arthas.aliyun.com/doc/

1.安装

Arthas 的安装非常简单,从GitHub地址https://github.com/alibaba/arthas/releases下载Arthas的最新版本,运行 Arthas 通常需要通过 Java Agent 的方式附加到目标 JVM 上,例如:

java -javaagent:/opt/springboot/arthas-bin/arthas-boot.jar -jar your-application.jar

或者,如果应用已经在运行,可以使用 attach 命令将Arthas附加到这个JVM上:

java -jar arthas-boot.jar <pid>
# 指定端口
java -jar arthas-boot.jar 8997 -Dteleport.server.port=8888

2.使用

dashboard命令,当前系统的实时数据面板

dashboard

thread命令,查看当前线程信息,查看线程的堆栈

# 列出前三个最耗时的线程
thread -n 3
# 统计最近 1000ms 内的线程 CPU 时间
thread -i 1000

trace命令,方法内部调用路径,并输出方法路径上的每个节点上耗时

trace com.zhuo.springbootdemo.controller.HelloController hello

watch命令,函数执行数据观测

参数

说明

-x

指定输出结果的属性遍历深度,默认为 1,最大值是 4

-b

在函数调用之前观察

-s

在函数返回之后观察

-n

执行次数

# 同时观察函数调用前和函数返回后
watch com.zhuo.springbootdemo.service.HelloService hello "{params,target,returnObj}" -x 2 -b -s -n 2

retransform命令,加载外部的.class文件,retransform jvm 已加载的类。

retransform /opt/springboot/HelloService.class

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

tt -t com.zhuo.springbootdemo.service.HelloService hello
正文到此结束