当前位置:网站首页>Arthas实践操作文档记录
Arthas实践操作文档记录
2022-06-11 15:04:00 【小Y在线编码】
Arthas实践操作文档记录
第1章Arthas简单介绍
1.1 Arthas是什么
arthas是阿里巴巴开源的Java诊断工具,基本使用场景是定位复现一些生产环境比较难以定位问题。可以在线排查问题,以及动态追踪Java代码,实时监控JVM状态等等,官网地址:https://arthas.aliyun.com/doc/。
1.2 Arthas能干什么
某个类从那个jar包加载的?为什么会报各种类的异常? (可以通过命令拿到指定类的加载路径和异常信息)
改的代码没有执行到?是没有commit还是分支搞错还是怎么样?(可以通过反编译拿到类的代码信息)
遇到问题无法在线上debug,难道只能通过加日志再重新发布吗?(可以通过jdk 1.5的instrument来进行代码的动态替换)
线上遇到某个用户的数据处理有问题,但线上同样无法debug,线下无法重现!(arthas中可以看到很详细的jvm状态以及一些比较方便的工具,比如反编译,在线调试等)
是否有一个全局视角来查看系统的运行状况?(dashboard命令查看jvm的详细信息)
怎么快速定位应用的热点,生成火焰图?
怎样直接从JVM内查找某个类的实例?
1.3 Arthas支持的版本
支持JDK 6+ 支持Linux/Mac/Windows
第2章Arthas的使用
2.1Arthas的安装(windows)
下载安装的方式有很多种,这里介绍一种手动安装的方式。
手动下载安装包:https://arthas.aliyun.com/download/latest_version?mirror=aliyun;
Linux的安装使用可参考官网:https://arthas.aliyun.com/doc/install-detail.html#
2.2Arthas的使用
下载安装包解压后cmd进入控制台,再进入到解压后的文件目录下;

输入命令:.\as.bat pid(查看程序的 pid可以使用java 自带的java VisualVM可视化工具)


选择需要监控分析的java进程,成功启动Arthas之后,会看到Arthas的界面,也可通过浏览器直接访问相应端口;

进入Arthas的界面后即可在此界面输入相应命令对程序进行分析;
2.3Arthas基本命令介绍与实际使用
注意:如果不记得命令,可以使用idea插件arthas idea生成arthas相关命令;

dashboard命令
输入该命令可以看到当前系统的实时数据面板;

jvm命令
输入该命令可以看到当前jvm的详细信息;

thread 命令
输入该命令可以查看到线程的堆栈详细信息;

trace命令
trace 命令能主动搜索方法调用路径,并输出方法路径上的每个节点上耗时,渲染和统计整个调用链路上的所有性能开销和追踪调用链路。
使用示例:
现在要监听SysUserController类下的user()方法的调用链:

输入命令:
trace com.pig4cloud.pigx.admin.controller.SysUserController user -n 5 --skipJDKMethod false
注意:trace后面的是类和方法的全路径;
调用该方法,随后可以看到在arthas界面输出了该方法的调用链以及链路上每个方法的耗时,可以利用这个方式找出比较耗时的方法进行有针对性的优化;

watch命令
watch命令可以让用户能方便的观察到指定方法的调用情况。能观察到的范围为:返回值、抛出异常、入参,通过编写 OGNL 表达式进行对应变量的查看。
使用示例:观察SysUserController类下的user()方法;

第3章profiler 生成火焰图(仅支持Linux/Mac)
profiler命令支持生成应用热点的火焰图。本质上是通过不断的采样,然后把收集到的采样结果生成火焰图,可以用于线上性能问题快速排查。
火焰图是基于perf结果产生的 SVG 图片,用来展示 CPU 的调用栈。

y 轴表示调用栈,每一层都是一个函数。调用栈越深,火焰就越高,顶部就是正在执行的函数,下方都是它的父函数。
x 轴表示抽样数,如果一个函数在 x 轴占据的宽度越宽,就表示它被抽到的次数多,即执行的时间长。注意,x 轴不代表时间,而是所有的调用栈合并后,按字母顺序排列的。
火焰图就是看顶层的哪个函数占据的宽度最大。只要有"平顶"(plateaus),就表示该函数可能存在性能问题。
颜色没有特殊含义,因为火焰图表示的是 CPU 的繁忙程度,所以一般选择暖色调。
间长。注意,x 轴不代表时间,而是所有的调用栈合并后,按字母顺序排列的。
火焰图就是看顶层的哪个函数占据的宽度最大。只要有"平顶"(plateaus),就表示该函数可能存在性能问题。
颜色没有特殊含义,因为火焰图表示的是 CPU 的繁忙程度,所以一般选择暖色调。
具体使用可参照官网:https://arthas.gitee.io/profiler.html
第4章 实际问题模拟
4.1 性能问题模拟
1.首先写一个耗时比较久的循环:
private void test() {
int a = 1;
while (a < 9999999) {
a++;
System.out.println(out(a));
}
}
2.在添加用户的方法中调用test()方法
3.启动服务,用arthas监控user方法
trace com.pig4cloud.pigx.admin.controller.SysUserController user -n 5 --skipJDKMethod false
4.调用添加用户的接口,经过较长时间后接口成功响应,可以看到arthas控制台输出了该方法的调用栈
可以看到test()方法耗时最久。
4.2 cpu飙高问题模拟
1.把上面的程序改造成一个死循环
2.同样在添加用户的接口中调用test()方法
3.重新启动服务之后再启动arthas。
4.在调用添加用户接口之前输入thread命令,此时可以看到各个线程都是正常的,如下图:
5.现在调用添加用户的接口,再次输入thread命令,可以看到其中有一个id为308的线程导致cpu飙升到百分之九十多。
6.打印出线程ID为308的详细信息,可以看到导致问题的具体代码位置和行数。
边栏推荐
- Recyclerview usage record
- Elk log analysis system
- Hot seek tiger, a list of eco economic models
- Summary of some classic embedded C interview questions
- Hamad application layout scheme 05 of hashicopy (visit the web page)
- uniapp设置页面跳转效果 - navigateTo切换效果 - 全局animationType动画
- 【SystemVerilog 之 验证】~ 测试平台、硬件设计描述、激励发生器、监测器、比较器
- Repository Manager之Nexus配置yum仓库
- 英伟达研发主管:AI 是如何改进芯片设计的?
- China's technology goes to sea, tidb database's overseas exploration road | interview with excellent technical team
猜你喜欢

19. insertion, deletion and pruning of binary search tree

Raspberry pie obtains the function of network installation system without the help of other devices

Simple C language address book

你违规了吗?

B站高管解读财报:疫情对公司长期发展无影响 视频化趋势不可阻挡

基于 GateWay 和 Nacos 实现微服务架构灰度发布方案

High number_ Chapter 6 infinite series__ Marklaurin series

HMS core shows the latest open capabilities in mwc2022, helping developers build high-quality applications
![[verification of SystemVerilog] ~ test platform, hardware design description, excitation generator, monitor and comparator](/img/3a/0cc26400eeb4b388face09b9a10f27.png)
[verification of SystemVerilog] ~ test platform, hardware design description, excitation generator, monitor and comparator

对于事务的认识
随机推荐
【Azure 应用服务】NodeJS Express + MSAL 实现API应用Token认证(AAD OAuth2 idToken)的认证实验 -- passport.authenticate()
[verification of SystemVerilog] ~ test platform, hardware design description, excitation generator, monitor and comparator
大道至簡 | 設計 ViT 到底怎麼配置Self-Attention才是最合理的?
社交软件Soul撤回IPO申请:上市只差临门一脚 腾讯是大股东
How to play seek tiger, which has attracted much attention in the market?
19. 二叉搜索樹的插入删除修剪
Backtracking / activity scheduling maximum compatible activities
Hamad application layout scheme 03 of hashicopy (run a job)
基于STM32F1的开源小项目
In depth research and analysis report on global and Chinese gas monitor market
清北力压耶鲁,MIT蝉联第一,2023QS世界大学排名最新发布
数据库“百亿蓝海”中,每位玩家都能找到一叶扁舟 | C位面对面
In depth analysis of "circle group" relationship system design | series of articles on "circle group" technology
Exporting data using mysqldump
在微服务架构中管理技术债务
【SystemVerilog 之 验证】~ 测试平台、硬件设计描述、激励发生器、监测器、比较器
Cisco Rui submitted the registration of sci tech Innovation Board: proposed to raise 600million yuan, with annual revenue of 222million yuan
树莓派获得网络安装系统功能,无需借助其他设备
How to batch insert 100000 pieces of data
对于事务的认识