Java进阶(JVM调优)——阿里云的Arthas的使用 & 安装和使用 & 死锁查找案例,重新加载案例,慢调用分析

Java进阶(JVM调优)——阿里云的Arthas的使用 & 安装和使用 & 死锁查找案例,重新加载案例,慢调用分析_第1张图片

前言

JVM作为Java进阶的知识,是需要Java程序员不断深度和理解的。

本篇博客介绍JVM调优的工具阿里云的Arthas的使用,安装和使用,命令的使用案例;死锁查询的案例;重新加载一个类信息的案例;调用慢的分析案例。

其他相关的JVM博客文章如下:

  • Java进阶(1)——JVM的内存分配 & 反射Class类的类对象 & 创建对象的几种方式 & 类加载(何时进入内存JVM)& 注解 & 反射+注解的案例
  • Java进阶(4)——结合类加载JVM的过程理解创建对象的几种方式:new,反射Class,克隆clone(拷贝),序列化反序列化
  • Java进阶(垃圾回收GC)——理论篇:JVM内存模型 & 垃圾回收定位清除算法 & JVM中的垃圾回收器
  • Java进阶(JVM调优)——JVM调优参数 & JDK自带工具使用 & 内存溢出和死锁问题案例 & GC垃圾回收

系列文章合集如下:
【合集】Java进阶——Java深入学习的笔记汇总 & 再论面向对象、数据结构和算法、JVM底层、多线程、类加载 …

目录

  • 前言
  • 引出
  • Arthas的使用
    • 官网和初识
    • 安装和使用
      • 1.启动自己的jar包
      • 2.然后启动阿尔萨斯
      • 3.命令参考
  • 命令的使用案例
  • 死锁的场景
    • thread 线程信息
    • jad反编译
  • retransform 重新加载某一个类的类信息
  • 调用慢的问题分析
    • trace调用路径
    • monitor 方法执行监控
  • 其他使用案例
  • 总结

引出


1.JVM调优的工具阿里云的Arthas的使用,安装和使用;
2.命令的使用案例,dashboard,heapdump,jvm,sm,jad;
3.死锁查询的案例;重新加载一个类信息的案例;调用慢的分析案例。

Arthas的使用

官网和初识

阿尔萨斯官网:https://arthas.aliyun.com/doc/

Java进阶(JVM调优)——阿里云的Arthas的使用 & 安装和使用 & 死锁查找案例,重新加载案例,慢调用分析_第2张图片

Arthas 是一款线上监控诊断产品,通过全局视角实时查看应用 load、内存、gc、线程的状态信息,并能在不修改应用代码的情况下,对业务问题进行诊断,包括查看方法调用的出入参、异常,监测方法执行耗时,类加载信息等,大大提升线上问题排查效率。

当你遇到以下类似问题而束手无策时,Arthas可以帮助你解决:

  1. 这个类从哪个 jar 包加载的?为什么会报各种类相关的 Exception?
  2. 我改的代码为什么没有执行到?难道是我没 commit?分支搞错了?
  3. 遇到问题无法在线上 debug,难道只能通过加日志再重新发布吗?
  4. 线上遇到某个用户的数据处理有问题,但线上同样无法 debug,线下无法重现!
  5. 是否有一个全局视角来查看系统的运行状况?
  6. 有什么办法可以监控到 JVM 的实时运行状态?
  7. 怎么快速定位应用的热点,生成火焰图?
  8. 怎样直接从 JVM 内查找某个类的实例?

Java进阶(JVM调优)——阿里云的Arthas的使用 & 安装和使用 & 死锁查找案例,重新加载案例,慢调用分析_第3张图片

安装和使用

curl -O https://arthas.aliyun.com/arthas-boot.jar #下载arthas

java -jar arthas-boot.jar #启动阿尔萨斯

1.启动自己的jar包

java -jar -Xms200m -Xmx200M -XX:+PrintGC  -XX:-UseParallelGC spring-gc-demo-1.0-SNAPSHOT.jar

Java进阶(JVM调优)——阿里云的Arthas的使用 & 安装和使用 & 死锁查找案例,重新加载案例,慢调用分析_第4张图片

2.然后启动阿尔萨斯

Java进阶(JVM调优)——阿里云的Arthas的使用 & 安装和使用 & 死锁查找案例,重新加载案例,慢调用分析_第5张图片

Java进阶(JVM调优)——阿里云的Arthas的使用 & 安装和使用 & 死锁查找案例,重新加载案例,慢调用分析_第6张图片

3.命令参考

https://arthas.aliyun.com/doc/commands.html

Java进阶(JVM调优)——阿里云的Arthas的使用 & 安装和使用 & 死锁查找案例,重新加载案例,慢调用分析_第7张图片

命令的使用案例

1.dashboard

通过这个命令,可以查看哪根线程是最吃CPU的!替代:top -p 进程 -H

得到进程仪表盘,当前系统的实时数据面板,按 ctrl+c 退出

Java进阶(JVM调优)——阿里云的Arthas的使用 & 安装和使用 & 死锁查找案例,重新加载案例,慢调用分析_第8张图片

2.heapdump

替代jmap命令,dump java heap, 类似 jmap 命令的 heap dump 功能

3.jvm

查看当前 JVM 信息,替代jinfo命令

Java进阶(JVM调优)——阿里云的Arthas的使用 & 安装和使用 & 死锁查找案例,重新加载案例,慢调用分析_第9张图片

4.sm

查看已加载类的方法信息

Java进阶(JVM调优)——阿里云的Arthas的使用 & 安装和使用 & 死锁查找案例,重新加载案例,慢调用分析_第10张图片

5.jad

jad 反编译看一下

Java进阶(JVM调优)——阿里云的Arthas的使用 & 安装和使用 & 死锁查找案例,重新加载案例,慢调用分析_第11张图片

6.help

arthas 的帮助命令

7.memory

查看 JVM 内存信息

Java进阶(JVM调优)——阿里云的Arthas的使用 & 安装和使用 & 死锁查找案例,重新加载案例,慢调用分析_第12张图片

8.watch

让你能方便的观察到指定函数的调用情况。能观察到的范围为:返回值抛出异常入参

死锁的场景

thread 线程信息

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

thread -h 查看帮助

Java进阶(JVM调优)——阿里云的Arthas的使用 & 安装和使用 & 死锁查找案例,重新加载案例,慢调用分析_第13张图片

Java进阶(JVM调优)——阿里云的Arthas的使用 & 安装和使用 & 死锁查找案例,重新加载案例,慢调用分析_第14张图片

检测死锁

thread -b 

Java进阶(JVM调优)——阿里云的Arthas的使用 & 安装和使用 & 死锁查找案例,重新加载案例,慢调用分析_第15张图片

jad反编译

想在Linux上直接查看某一个类的源代码,可以使用它来完成代码的反编译

在线反编译,比如:A 团队 调用 B团队的接口,当获得结果不对,那么则可以使用这种命令,在线查看B团队中的类的代码

类似于:javap

jad com.tianju.gc.controller.DeadLockController

Java进阶(JVM调优)——阿里云的Arthas的使用 & 安装和使用 & 死锁查找案例,重新加载案例,慢调用分析_第16张图片

retransform 重新加载某一个类的类信息

retransform

在不停止程序的情况,重新加载某一个类的类信息

retransform /root/CardInfo.class

Java进阶(JVM调优)——阿里云的Arthas的使用 & 安装和使用 & 死锁查找案例,重新加载案例,慢调用分析_第17张图片

Java进阶(JVM调优)——阿里云的Arthas的使用 & 安装和使用 & 死锁查找案例,重新加载案例,慢调用分析_第18张图片

retransform /usr/local/software/jar/java-gc-demo/CardInfo.class 

Java进阶(JVM调优)——阿里云的Arthas的使用 & 安装和使用 & 死锁查找案例,重新加载案例,慢调用分析_第19张图片

在这里插入图片描述

调用慢的问题分析

trace调用路径

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

主要用于:性能调优

分布式系统使用:zipkin ,skywarking

Java进阶(JVM调优)——阿里云的Arthas的使用 & 安装和使用 & 死锁查找案例,重新加载案例,慢调用分析_第20张图片

Java进阶(JVM调优)——阿里云的Arthas的使用 & 安装和使用 & 死锁查找案例,重新加载案例,慢调用分析_第21张图片

trace命令查看调用链

Java进阶(JVM调优)——阿里云的Arthas的使用 & 安装和使用 & 死锁查找案例,重新加载案例,慢调用分析_第22张图片

monitor 方法执行监控

方法执行监控

服务端是以任务的形式在后台跑任务,植入的代码随着任务的中止而不会被执行,所以任务关闭后,不会对原有性能产生太大影响,而且原则上,任何 Arthas 命令不会引起原有业务逻辑的改变

Java进阶(JVM调优)——阿里云的Arthas的使用 & 安装和使用 & 死锁查找案例,重新加载案例,慢调用分析_第23张图片

其他使用案例

https://github.com/alibaba/arthas/issues?q=label%3Auser-case

https://github.com/alibaba/arthas/issues/1494

Java进阶(JVM调优)——阿里云的Arthas的使用 & 安装和使用 & 死锁查找案例,重新加载案例,慢调用分析_第24张图片


总结

1.JVM调优的工具阿里云的Arthas的使用,安装和使用;
2.命令的使用案例,dashboard,heapdump,jvm,sm,jad;
3.死锁查询的案例;重新加载一个类信息的案例;调用慢的分析案例。

你可能感兴趣的:(Java,java,jvm,阿里云)