Bootstrap

Java诊断神奇,Arthas详细教程

官方文档

官方参考文档地址

下载安装

  1. 在服务器上更新下载源
apt update
  1. 安装curl
apt install curl
  1. 下载arthas
curl -O https://arthas.aliyun.com/arthas-boot.jar
  1. 启动arthas
java -jar arthas-boot.jar

在这里插入图片描述

  1. 选择需要分析的java进程
    在这里插入图片描述

使用场景

耗时分析

  1. 选择要分析的类和方法
trace com.akey.authcenter.controller.LoginController login

在这里插入图片描述

  1. 进一步分析上一步结果中耗时最高的方法
trace me.akey.akeymecommon.dubbo.AkeyLoginService login

在这里插入图片描述

  1. 重复以上步骤直到找到问题
trace com.akey.authcenter.dubbo.AkeyLoginServiceImpl doLogin

在这里插入图片描述

观察指定函数的入参、返回值、异常

  1. 选择想要分析的方法(-n 5表示采集5次后退出采集;-x 3表示最大遍历深度是3,默认是1,最大是4)
watch com.akey.authcenter.dubbo.AkeyUserServiceImpl forbidUser '{params,returnObj,throwExp}'  -n 5  -x 3

在这里插入图片描述

  1. 带过滤条件分析
watch com.akey.authcenter.dubbo.AkeyUserServiceImpl forbidUser '{params,returnObj,throwExp}' "params[1].equals('akey_MX3PAY2fGjHC7c')"  -n 5  -x 3

在这里插入图片描述

总体查看整个进程的运行情况

  1. 输入dashboard可以查看整个进程的运行情况,线程、内存、GC、运行环境信息
dashboard

在这里插入图片描述

查看线程详细情况

  1. 输入thread可以查看线程详细情况
thread

在这里插入图片描述

  1. 输入thread -n 10可以查看最繁忙的10个线程
thread -n 10

在这里插入图片描述

  1. 输入 thread加上线程ID 可以查看线程堆栈
thread 46

在这里插入图片描述

  1. 输入 thread -b 可以查看线程死锁
thread -b

在这里插入图片描述

反编译类

  1. 输入 jad加类的全名(不带.java后缀),可以反编译,这样可以方便我们查看线上代码是否是正确的版本
jad com.akey.authcenter.utils.JwtUtil

在这里插入图片描述

查看static变量的值

  1. 使用 ognl 命令可以查看线上变static值,甚至可以修改变量的值。若报错‘java.lang.ClassNotFoundException’,可以通过classloader -t查看类加载器,并指定一下靠近应用层的类加载器即可。
classloader -t
ognl -c 506c589e '@com.akey.authcenter.utils.JwtUtil@jwtLifeMinuteNacos'

在这里插入图片描述

;