JVM 调优篇10 使用arthas排优

一  Arthas的作用

1.1 作用

1. 这个类从哪个 jar 包加载的?为什么会报各种类相关的 Exception?

2.是否有一个全局视角来查看系统的运行状况?

3. 有什么办法可以监控到JVM的实时运行状态?

4. 怎么快速定位应用的热点,生成火焰图?

二  安装操作

2.1 linux的安装

下载arthas-boot.jar 然后运行 java -jar 的方式启动

2.2 windows的安装

在c:\下创建目录arthas,在windows命令窗口下,使用curl命令下载阿里服务器上的jar包,大小约诶108k。

2. 使用java启动arthas-boot.jar,来安装arthas,大小约10M。运行此命令会发现java进程,输入1 

按回车。则自动从远程主机上下载arthas到本地目录
3.查看安装目录

三  常用操作

3.1 操作api

输入dashboard命令
输入thread命令
输入monitor命令

四  通过arthas生成火焰图

4.1 profile命令

profiler 命令支持生成应用热点的火焰图。本质上是 通过不断的采样,然后把收集到的采样结果生成火焰图。

4.2 火焰图的解析

y 轴表示调用栈,每一层都是一个函数。调用栈越深,火焰就越高,顶部就是正在执行的函数,下方都是它的父函数。

x 轴表示抽样数,如果一个函数在 x 轴占据的宽度越宽,就表示它被抽到的次数多,即执行的时间长。注意,x 轴不代表时间,而是所有的调用栈合并后,按字母顺序排列的。

火焰图就是看顶层的哪个函数占据的宽度最大。只要有"平顶"(plateaus),就表示该函数可能存在性能问题。

颜色没有特殊含义,因为火焰图表示的是 CPU 的繁忙程度,所以一般选择暖色调。

最顶层的函数g()占用 CPU 时间最多。d()的宽度最大,但是它直接耗用 CPU 的部分很少。b()和c()没有直接消耗 CPU。因此,如果要调查性能问题,首先应该调查g(),其次是i()。

另外,从图中可知a()有两个分支b()和h(),这表明a()里面可能有一个条件语句,而b()分支消耗的 CPU 大大高于h()。

Arthas profiler(使用async-profiler对应用采样,生成火焰图)_51CTO博客_async.art

4.3 常用命令

1.常用命令

2.操作命令

1启动profiler,默认情况下,生成的是 cpu 的火焰图,即 event 为cpu。可以用--event参数指定其他性能分析模式,见下文。

$ profiler start
Started [cpu] profiling

2.显示支持的事件

profiler list

3.获取已采集的sample的数量

$ profiler getSamples
23

4.查看profiler状态(可以查看当前profiler在采样哪种event和采样时间。

$ profiler status
[cpu] profiling is running for 4 seconds

5.停止profiler,并同步生成文件(默认在工作目录下的arthas-output目录。)

$ profiler stop
profiler output file: /tmp/demo/arthas-output/20240919-155147.svg

通过 --file参数来指定输出结果路径,在--file参数指定的文件名后缀为 html 或 jfr 时,文件格式可以被推断出来。比如--file /tmp/result.html 将自动生成火焰图。

# 指定生成的文件名以及路径
profiler stop --file /tmp/result.svg

6.生成html文件

可以用--format指定生成格式,默认情况下,结果是 Flame Graph格式的 html 文件,也可以用 -o 或 --format 参数指定其他内容格式,包括 flat、traces、collapsed、flamegraph、tree、jfr。

profiler stop --format html

4.4 操作案例截图

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Cesium 实战 - 自定义纹理材质 - 立体墙(旋转材质)

Cesium 实战 - 自定义纹理材质 - 立体墙(旋转材质) 核心代码完整代码在线示例Cesium 给实体对象(Entity)提供了很多实用的样式,基本满足普通项目需求; 但是作为 WebGL 引擎,肯定不够丰富,尤其是动态效果样式。 对于实体对象(Entity),可以通过自定义材质,实现各种…

CST软件超表面--- 偏振片- 线圆极化转换,Floquet端口,S参数算轴比AR

这期我们看一个超表面极化分析,用到Floquet端口模数,S参数读出极化和轴比,还有平面波散射截面等技巧。 使用模板,频率0-25GHz,电场监视器8.06GHz: 画一片PEC: 画第二片PEC,insert到第一片里面&…

python爬虫,爬取网页壁纸图片

python爬虫实战,爬取网页壁纸图片 使用python爬取壁纸图片,保存到本地。 爬取彼岸图网,网站地址https://pic.netbian.com/ 本人小白,记录一下学习过程。 开始前的准备 安装python环境,略。 python编辑器pycharm2…

自动化检查网页的TDK,python+selenium自动化测试web的网页源代码中的title,Description,Keywords

首先,TDK是什么?对于新手小白来说,可能是懵逼的,所以这里给出一个官方的解说‌网页的TDK是指标题(Title)、描述(Description)和关键词(Keywords)的集合‌。这…

大数据-164 Apache Kylin Cube优化 案例1 定义衍生维度与对比 超详细

点一下关注吧!!!非常感谢!!持续更新!!! 目前已经更新到了: Hadoop(已更完)HDFS(已更完)MapReduce(已更完&am…

Blazor Web APP学习记录

目录 1 呈现模式1.1 静态SSR1.2 服务器端交互SSR1.3 客户端交互CSR1.4 自动交互式1.5 注意 2 Blazor Web APP项目3 会话状态3.1 Blazor Server会话状态保存3.2 Blazor WebAssembly 会话状态保存 1 呈现模式 参见:https://learn.microsoft.com/zh-cn/aspnet/core/bl…

Golang | Leetcode Golang题解之第474题一和零

题目: 题解: func findMaxForm(strs []string, m, n int) int {dp : make([][]int, m1)for i : range dp {dp[i] make([]int, n1)}for _, s : range strs {zeros : strings.Count(s, "0")ones : len(s) - zerosfor j : m; j > zeros; j--…

点评项目-7-缓存击穿的两种解决方案、缓存工具类的编写

缓存击穿 在高并发访问的访问中,对于复杂业务 key 的缓存,可能会在缓存生效前打入大量的请求,导致大量的请求打到数据库 解决方案: 1.互斥锁,给缓存的构建过程加上一个锁,当拿到锁时才进行下一步&#x…

【Boss直聘-注册/登录安全分析报告】

前言 由于网站注册入口容易被黑客攻击,存在如下安全问题: 暴力破解密码,造成用户信息泄露短信盗刷的安全问题,影响业务及导致用户投诉带来经济损失,尤其是后付费客户,风险巨大,造成亏损无底洞 …

线性自抗扰控制(LADRC)系统算法框图

非线性ADRC(NLADRC)详细算法框图和源代码请参考专栏系列文章,常用链接如下: 1、NLADRC自抗扰控制 NLADRC自抗扰控制从Simulink仿真到PLC控制实现_自抗扰控制器 simulink仿真-CSDN博客文章浏览阅读1.6k次,点赞2次,收藏7次。本文介绍了如何将ADRC自抗扰控制算法从Simulink…

牛只行为及种类识别数据集18g牛只数据,适用于多种图像识别,目标检测,区域入侵检测等算法作为数据集。数据集中包括牛只行走,站立,进食,饮水等不同类型的数据

18g牛只数据,适用于多种图像识别,目标检测,区域入侵检测等算法作为数据集。 数据集中包括牛只行走,站立,进食,饮水等不同类型的数据,可以用于行为检测 数据集中包含多种不同种类的牛只&#xff…

【MATLAB源码-第249期】基于matlab的信道量化反馈的预编码仿真,采用均匀量化方式和LDL分解的预编码。

操作环境: MATLAB 2022a 1、算法描述 基于信道量化反馈的预编码技术是当今无线通信系统中的一个核心研究方向。随着多输入多输出(MIMO)系统的广泛应用,如何有效地利用信道状态信息(CSI)进行预编码成为提…

用自己的数据集复现YOLOv5

yolov5已经出了很多版本了,这里我以目前最新的版本为例,先在官网下载源码:GitHub - ultralytics/yolov5: YOLOv5 🚀 in PyTorch > ONNX > CoreML > TFLite 然后下载预训练模型,需要哪个就点击哪个模型就行&am…

统一时序预测模型,上下文长度首次扩展至千级别!!!

统一时序预测模型,上下文长度首次扩展至千级别,适用各类数据集! 今天给大家介绍一篇清华大学的时间序列预测最新工作,提出了统一的Transformer时序预测模型,能同时处理单变量和多变量时序预测,并将时序预测…

PPT分享:埃森哲-如何利用大数据进行数据挖掘与分析

PPT下载链接见文末~ 在当今信息爆炸的时代,大数据已成为企业决策、科学研究及社会发展的重要驱动力。数据挖掘与分析作为大数据应用的核心环节,能够帮助我们从海量数据中提取有价值的信息和知识。 本文将引导您了解如何利用大数据进行数据挖掘与分析&a…

Android从上帝视角来看PackageManagerService

戳蓝字“牛晓伟”关注我哦! 用心坚持输出易读、有趣、有深度、高质量、体系化的技术文章,技术文章也可以有温度。 前言 阅读该篇之前,建议先阅读下面的系列文章: Android深入理解包管理–PackageManagerService和它的“小伙伴…

苹果正式宣布:iPhone全面开放近场通信(Near Field Communication,简称NFC)【使用安全元件提供app内NFC数据交换功能】

文章目录 引言I iPhone的NFC功能开发者用户数据交换的体验革新安全与隐私II 知识扩展:近场通信(NFC)技术钱包NFC开关打开读取NFC标签(NFC tags )权限demo引言 2014年iPhone 6开始,苹果首次引入了NFC功能,但最初只允许自家的Apple Pay进行移动支付。慢慢地适配了交通卡,增…

【CSS】纯css3螺旋状loading加载特效

效果图 <div class"ai-loader"><div class"dot"></div><div class"dot"></div><div class"dot"></div><div class"dot"></div><div class"dot">&…

【AI知识点】三种不同架构的大语言模型(LLMs)的区别

【AI论文解读】【AI知识点】【AI小项目】【AI战略思考】 在自然语言处理&#xff08;NLP&#xff09;中&#xff0c;预训练语言模型&#xff08;LLMs, Large Language Models&#xff09;通常基于不同的架构&#xff0c;如仅编码器的模型&#xff08;Encoder-only&#xff09;、…

量子计算机的原理与物理实现

量子计算机的原理与物理实现很复杂 指导性原则 首先思考制备一台量子计算机需要些什么&#xff1f; 需要量子比特——二能级量子系统。除了量子计算机需要满足一些物理特性&#xff0c;它还必须要把量子比特绘制到某种初态上&#xff0c;以及测量系统的输出态。 而实验上的挑战…