arthas是线上诊断 java应用的工具,可以查看gc, 内存,cpu, 线程等信息,还可以查看方法的入参,返回结果,以及统计方法的耗时,这对线上定位问题是比较友好的。今天让我们来一起看看这些常用的命令怎么使用吧。
一.安装
//下载 arthas 的启动包 curl -O https://arthas.aliyun.com/arthas-boot.jar //启动arthas java -jar arthas-boot.jar
启动arthas后会列出所有当前机器运行的java应用,输入应用对应前面的序号,按回车键,arthas就可以attach到该应用上了:
ps: 如果attach失败,可以到目录~/log/arthas,查看日志具体原因
二.常用命令介绍
dashboard
当前应用的实时监控信息
如下图所示,可以从该命令看出线程的cpu使用率;jvm内存的使用情况;运行的操作系统和jdk版本等信息
thread
查看阻塞线程(可以排除死锁问题)和占用cpu使用率最多的前N个线程(可以排除线程占用cpu高问题)
//查看占用cpu最大的前三个线程 thread -n 3 //查看相互阻塞的线程 thread -b
jad
可以将字节码反编译成java代码,这在升级时,如果发现修改的功能无效,可以通过这个命令反编译代码查看是否是最新的程序包
//反编译只看源码 jad --source-only demo.MathGame //反编译只看方法 jad demo.MathGame main
monitor
对方法执行的监控
monitor -c 5 demo.MathGame primeFactors "params[0] <= 2"
trace
输出方法的调用路径,并统计每个方法的耗时
trace --skipJDKMethod demo.MathGame run -n 1 '#cost > 10'
watch
输出方法的入参和出参,以及抛出的异常
watch demo.MathGame primeFactors -x 2
三.小结
本文讲述了arthas的安装和常用命令的使用,不需要修改和重启应用,对分析线上问题是十分便利的,强烈安利大家用起来!
今天的分享就到此结束,如果觉得本文不错的还请伙伴们帮忙点赞转发,欢迎持续关注我们!