官方文档
官方参考文档地址
下载安装
- 在服务器上更新下载源
apt update
- 安装curl
apt install curl
- 下载arthas
curl -O https://arthas.aliyun.com/arthas-boot.jar
- 启动arthas
java -jar arthas-boot.jar
- 选择需要分析的java进程
使用场景
耗时分析
- 选择要分析的类和方法
trace com.akey.authcenter.controller.LoginController login
- 进一步分析上一步结果中耗时最高的方法
trace me.akey.akeymecommon.dubbo.AkeyLoginService login
- 重复以上步骤直到找到问题
trace com.akey.authcenter.dubbo.AkeyLoginServiceImpl doLogin
观察指定函数的入参、返回值、异常
- 选择想要分析的方法(-n 5表示采集5次后退出采集;-x 3表示最大遍历深度是3,默认是1,最大是4)
watch com.akey.authcenter.dubbo.AkeyUserServiceImpl forbidUser '{params,returnObj,throwExp}' -n 5 -x 3
- 带过滤条件分析
watch com.akey.authcenter.dubbo.AkeyUserServiceImpl forbidUser '{params,returnObj,throwExp}' "params[1].equals('akey_MX3PAY2fGjHC7c')" -n 5 -x 3
总体查看整个进程的运行情况
- 输入dashboard可以查看整个进程的运行情况,线程、内存、GC、运行环境信息
dashboard
查看线程详细情况
- 输入thread可以查看线程详细情况
thread
- 输入thread -n 10可以查看最繁忙的10个线程
thread -n 10
- 输入 thread加上线程ID 可以查看线程堆栈
thread 46
- 输入 thread -b 可以查看线程死锁
thread -b
反编译类
- 输入 jad加类的全名(不带.java后缀),可以反编译,这样可以方便我们查看线上代码是否是正确的版本
jad com.akey.authcenter.utils.JwtUtil
查看static变量的值
- 使用 ognl 命令可以查看线上变static值,甚至可以修改变量的值。若报错‘java.lang.ClassNotFoundException’,可以通过classloader -t查看类加载器,并指定一下靠近应用层的类加载器即可。
classloader -t
ognl -c 506c589e '@com.akey.authcenter.utils.JwtUtil@jwtLifeMinuteNacos'