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

在这里插入图片描述

前言

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/

在这里插入图片描述

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

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

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

在这里插入图片描述

安装和使用

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

在这里插入图片描述

2.然后启动阿尔萨斯

在这里插入图片描述

在这里插入图片描述

3.命令参考

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

在这里插入图片描述

命令的使用案例

1.dashboard

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

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

在这里插入图片描述

2.heapdump

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

3.jvm

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

在这里插入图片描述

4.sm

查看已加载类的方法信息

在这里插入图片描述

5.jad

jad 反编译看一下

在这里插入图片描述

6.help

arthas 的帮助命令

7.memory

查看 JVM 内存信息

在这里插入图片描述

8.watch

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

死锁的场景

thread 线程信息

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

thread -h 查看帮助

在这里插入图片描述

在这里插入图片描述

检测死锁

thread -b 

在这里插入图片描述

jad反编译

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

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

类似于:javap

jad com.tianju.gc.controller.DeadLockController

在这里插入图片描述

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

retransform

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

retransform /root/CardInfo.class

在这里插入图片描述

在这里插入图片描述

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

在这里插入图片描述

在这里插入图片描述

调用慢的问题分析

trace调用路径

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

主要用于:性能调优

分布式系统使用:zipkin ,skywarking

在这里插入图片描述

在这里插入图片描述

trace命令查看调用链

在这里插入图片描述

monitor 方法执行监控

方法执行监控

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

在这里插入图片描述

其他使用案例

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

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

在这里插入图片描述


总结

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/126782.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

银河麒麟等 Linux系统 安装 .net 3.1,net 6及更高版本的方法

确定 系统的版本。华为鲲鹏处理器是 Arm64位的。 于是到windows 官网下载对应版本 .net sdk 下载地址 https://dotnet.microsoft.com/zh-cn/download/dotnet 2.下载完成后,再linux 服务器 上进入到文件所在目录,建议全英文路径。 然后依次输入以下命令 …

使用切面实现前端重复提交(防抖)

使用切面实现前端重复提交(防抖) 代码结构定义注解请求锁切面处理器入参对象使用注解 代码结构 原理: 1、前端提交保存操作; 2、后端通过注解指定重复提交的关键字段进行识别,可以有多个; 3、拼接关键字段&…

C#医学检验室(LIS)信息管理系统源码

LIS:实验室信息管理系统 (Laboratory Information Management System简称:LIS)。 LIS 是面向医院检验科、检验中心、动物实验所、生物医疗研究所等科研单位研发的集数据采集、传输、存储、分析、处理、发布等功能于一体的信息管理系统。 一、完善的质控: 从样本管理…

python实现微信新版v3的jsapi支付

python实现微信新版v3的jsapi支付 1、需要从公众号、商户号获取的信息 注意:在商户号的支付授权目录中需要设置好发起支付的界面url,比如我的: http://xxx/paypage/# 商户证书私钥,此文件不要放置在下面设置的CERT_DIR目录里。…

excel中超级表和普通表的相互转换

1、普通表转换为超级表 选中表内任一单元格,然后按CtrlT,确认即可。 2、超级表转换为普通表 选中超级表内任一单元格,右键,表格,转换为区域,确定即可。 这时虽然已经变成了普通表,但样式没有…

【机器学习】七、降维与度量学习

1. 维数灾难 样本的特征数称为维数(dimensionality),当维数非常大时,也就是现在所说的维数灾难。 维数灾难具体表现在:在高维情形下,数据样本将变得十分稀疏,因为此时要满足训练样本为“密采样…

如何设计开发一对一交友App吸引更多活跃用户

在当今社交媒体时代,一对一交友App开发正日渐成为发展热点。如何吸引更多活跃用户成为开发者们的首要任务。通过本文,我们将探讨一系列方法,助您设计开发一对一交友App,吸引更多用户的关注和参与,提升App的活跃度。 了…

《012.SpringBoot+vue之在线考试系统》【前后端分离有开发文档】

《012.SpringBootvue之在线考试系统》【前后端分离&有开发文档】 项目简介 [1]本系统涉及到的技术主要如下: 推荐环境配置:idea jdk1.8 maven MySQL 前后端分离; 后台:SpringBootMybatisMySQL; 前台:Vue; [2]功能模块展示&…

2024上海智博会,上海国际智慧城市,物联网,大数据展会(世亚智博会)

中国国际智慧城市,物联网,大数据博览会(简称:世亚智博会)自2010年创办以来,至今已成功举办十多届。世亚智博会是中国较高、规模较大、影响力较广的展会;是被国际业界公认的不可错过的名展之一。随着世亚智博会的国际地位和影响不断…

NFT数字藏品(交易平台)系统开发

随着数字技术和区块链技术的发展,NFT数字藏品交易平台系统开发逐渐成为了一个热门话题。NFT,即非同质化代币,可以用来代表独一无二的数字资产,如图片、音频、视频等,在数字世界中具有极高的价值。本文将介绍NFT数字藏品…

拆分代码 + 动态加载 + 预加载,减少首屏资源,提升首屏性能及应用体验

github 原文地址 我们看一些针对《如何提升应用首屏加载体验》的文章,提到的必不可少的措施,便是减少首屏幕加载资源的大小,而减少资源大小必然会想到按需加载措施。本文提到的便是一个基于webpack 插件与 react 组件实现的一套研发高度自定…

AI 时代的企业级安全合规策略

目录 漏洞分类管理的流程 安全策略管理 在扫描结果策略中定义细粒度的规则 有效考虑整个组织中的关键漏洞 确保职责分离 尝试组合拳 本文来源:about.gitlab.com 作者:Grant Hickman 在应用程序敏捷研发、敏捷交付的今天,让安全人员跟上…

【亚马逊云科技产品测评】活动征文|AWS EC2 部署Echarts大屏展示项目

前言 Echarts简介 ECharts是一个使用JavaScript开发的,开源的可视化库。它可以让数据变得生动起来,提供直观,交互性强,可高度个性化定制的数据可视化图表。ECharts支持大部分的浏览器,如IE6、Chrome、Firefox、Safari等…

不用开会员就能在线编辑、管理及分享各类地理空间数据!

「四维轻云」作为一款地理空间数据云管理平台,具有三维模型、正射影像、激光点云、数字高程模型、人工模型和矢量数据等地理空间数据的在线管理、浏览及分享等功能,致力于为用户提供更加方便、快捷的地理空间数据解决方案。 一、发布、管理超大空间数据…

韩语图片文字如何转为纯文本?

如何将上图为韩语的图片转为文本文件?这个需要用到OCR程序,操作方法如下: 一、打开金鸣识别网站。 二、点击“点击添加图片/PDF”,将待识别的图片添加到列表。 三、识别模块点选“通用文字”,输出格式选择“纯文本输…

Python3 API 的封装及调用

一、API 的封装 API(Application Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作…

【Node.js入门】1.3 开始开发Node.js应用程序

1.3 开始开发Node.js应用程序 学习目标 (1)熟悉开发工具Visual Studio Code的基本使用; (2)掌握Node.js应用程序的编写、运行和调试的基本方法。 构建第一个 Node.js应用程序 代码 const http require("htt…

前端js实现将数组对象组装成自己需要的属性,或者去掉对象中不必要的属性

前言 提示:这里可以添加本文要记录的大概内容: 需求:前端js实现将数组对象组装成自己需要的属性,或者前端js实现去掉对象中不必要的属性 提示:以下是本篇文章正文内容,下面案例可供参考 一、示例数组对象…

浅谈多回路电表在荷兰光伏系统配电项目中的应用

1.背景信息 Background: 随着全球化石能源(石油,煤炭)越来越接近枯竭,污染日趋严重,气候日益变暖等问题,全球多个国家和地区相继出台了法规政策,推动了光伏产业的发展。但是现有的光…

vioovi的ECRS工时分析软件:食品加工行业的生产效率提升利器

在食品加工行业,提高生产效率、降低成本、优化资源配置是至关重要的。随着科技的不断发展,越来越多的企业开始借助先进的软件工具来助力生产管理。本文将介绍一款备受食品加工企业青睐的工业工程软件——vioovi的ECRS工时分析软件,并探讨其如…