测试能力提升 性能测试之 JVM 调优工具 Arthas

大道 · 2020年07月17日 · 1266 次阅读

Arthas 是 Alibaba 开源的 Java 诊断工具,深受开发者喜爱。在线排查问题,无需重启;动态跟踪 Java 代码;实时监控 JVM 状态。


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

文档: https://alibaba.github.io/arthas/

安装启动 Arthas

curl -O https://alibaba.github.io/arthas/arthas-boot.jar
java -jar arthas-boot.jar

选择应用 Java 进程:

需要观察进程是第5个,则输入5,再输入回车/Enter
Arthas会attach就到目标进程上

基础命令

help——查看命令帮助信息
cls——清空当前屏幕区域
history——打印命令历史
quit——退出当前 Arthas 客户端,其他 Arthas 客户端不受影响
stop——关闭 Arthas 服务端,所有 Arthas 客户端全部退出

jvm 命令

dashboard——当前系统的实时数据面板
thread——查看当前 JVM 的线程堆栈信息
jvm——查看当前 JVM 的信息
sysprop——查看和修改JVM的系统属性
sysenv——查看JVM的环境变量
vmoption——查看和修改JVM里诊断相关的option
heapdump——dump java heap, 类似jmap命令的heap dump功能

分析命令

monitor——方法执行监控
watch——方法执行数据观测
trace——方法内部调用路径,并输出方法路径上的每个节点上耗时
stack——输出当前方法被调用的调用路径
tt——方法执行数据的时空隧道,记录下指定方法每次调用的入参和返回信息,并能对这些不同的时间下调用进行观测

推荐命令

thread

可以排查死锁。查看当前线程信息,查看线程的堆栈

thread -b:找出当前阻塞其他线程的线程
有时候我们发现应用卡住了, 通常是由于某个线程拿住了某个锁, 并且其他线程都在等待这把锁造成的。
为了排查这类问题, arthas提供了thread -b, 一键找出那个罪魁祸首。
thread –state:查看指定状态的线程

trace

可以在性能测试中分析链路上方法的执行时间,判断性能问题所在。
trace 根据方法内部调用路径,并输出方法路径上的每个节点上耗时。

trace 命令能主动搜索 class-pattern/method-pattern 对应的方法调用路径,渲染和统计整个调用链路上的所有性能开销和追踪调用链路。

trace 包类名 方法 
trace com.itest.itestapi.TestController iTestGet

扫一扫,关注我

暂无回复。
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册