【Arthas】【持续更新】三分钟掌握arthas常用查询命令,入门到实战

news2024/10/17 13:31:06

Arthas

  • 一、下载和启动
    • 1、官网地址
    • 2、下载
    • 3、启动
    • 4、退出
  • 二、常用命令
    • 1、dashboard:当前系统的实时数据面板
    • 2、profiler:监控进程的cpu\内存使用情况。细致到某个方法
      • 采集与生成报告
      • 查看 profiling 状态
      • 查看 profiler 自身的内存占用
    • 3、thread:查看当前线程信息,查看线程的堆栈
      • 展示当前最忙的前 N 个线程并打印堆栈
      • 默认按照 CPU 增量时间降序排列,只显示第一页数据
    • 4、stack:输出当前方法被调用的调用路径
    • 5、trace:方法内部调用路径,并输出方法路径上的每个节点上耗时
    • 6、watch:函数执行数据观测
    • 7、tt:记录下指定方法每次调用的入参和返回信息
  • 三、案例
    • 1、排查内存占用过高
    • 2、排查CPU占用过高:持续监控法
    • 3、排查CPU占用过高:实时查询法
  • END

一、下载和启动

1、官网地址

在这里插入图片描述

官方网站:https://arthas.aliyun.com/
命令列表:https://arthas.aliyun.com/doc/commands.html

2、下载

curl -O https://arthas.aliyun.com/arthas-boot.jar
java -jar arthas-boot.jar

在这里插入图片描述

3、启动

 java -jar arthas-boot.jar

在这里插入图片描述

选择应用 java 进程:输入数字【1】开始监控进程id22337的进程,输入【2】则监控3490的进程

* [1]: 22337 test-a.jar
  [2]: 3490 test-b.jar
  [3]: 19843 xxx.jar
  [4]: 3732 xxx.jar
  [5]: 8807 .xxx.jar
  [6]: 31895 xxx.jar
  [7]: 30777 xxx.jar
  [8]: 9726 xxx.jar

显示以下界面则监控成功
在这里插入图片描述

4、退出

如果只是退出当前的连接,可以用quit或者exit命令。Attach 到目标进程上的 arthas 还会继续运行,端口会保持开放,下次连接时可以直接连接上。
如果想完全退出 arthas,可以执行stop命令。

二、常用命令

1、dashboard:当前系统的实时数据面板

当运行在 Ali-tomcat 时,会显示当前 tomcat 的实时信息,如 HTTP 请求的 qps, rt, 错误数, 线程池信息等等。

详细示例:https://arthas.aliyun.com/doc/dashboard.html

参数名称参数说明
[i:]刷新实时数据的时间间隔 (ms),默认 5000ms
[n:]刷新实时数据的次数

命令

dashboard

在这里插入图片描述

2、profiler:监控进程的cpu\内存使用情况。细致到某个方法

命令支持生成应用热点的火焰图。本质上是通过不断的采样,然后把收集到的采样结果生成火焰图
详细示例:https://arthas.aliyun.com/doc/profiler.html

参数名称参数说明
action要执行的操作
actionArg属性名模式
[i:]采样间隔(单位:ns)(默认值:10’000’000,即 10 ms)
[f:]将输出转储到指定路径
[d:]运行评测指定秒
[e:]要跟踪哪个事件(cpu、 alloc(内存)、lock、cache-misses 等),默认是 cpu

采集与生成报告

1、开启采集
profiler start --event alloc
2、采集数量
profiler getSamples
3、停止采集,生成报告
profiler stop --format html

查看 profiling 状态

profiler status

查看 profiler 自身的内存占用

profiler meminfo

在这里插入图片描述

3、thread:查看当前线程信息,查看线程的堆栈

详细示例:https://arthas.aliyun.com/doc/thread.html

参数名称参数说明
id线程 id
[n:]指定最忙的前 N 个线程并打印堆栈
[b]找出当前阻塞其他线程的线程
[i ]指定 cpu 使用率统计的采样间隔,单位为毫秒,默认值为 200
[–all]显示所有匹配的线程

展示当前最忙的前 N 个线程并打印堆栈

thread -n 3

默认按照 CPU 增量时间降序排列,只显示第一页数据

thread

在这里插入图片描述

4、stack:输出当前方法被调用的调用路径

很多时候我们都知道一个方法被执行,但这个方法被执行的路径非常多,或者你根本就不知道这个方法是从那里被执行了,此时你需要的是 stack 命令。

详细示例:https://arthas.aliyun.com/doc/stack.html

查询近三次指定类下的指定方法调用情况

stack com.xxx.xxxService findList -n 3

在这里插入图片描述

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

trace 命令能主动搜索 class-patternmethod-pattern 对应的方法调用路径,渲染和统计整个调用链路上的所有性能开销和追踪调用链路。

详细示例:https://arthas.aliyun.com/doc/trace.html

查询近三次指定类下的指定方法调用情况

trace com.xxx.xxxService findList -n 3

在这里插入图片描述

6、watch:函数执行数据观测

让你能方便的观察到指定函数的调用情况。能观察到的范围为:返回值、抛出异常、入参,通过编写 OGNL 表达式进行对应变量的查看。

详细示例:https://arthas.aliyun.com/doc/watch.html

查询近三次指定类下的指定方法调用情况

watch com.xxx.xxxService findList -n 3

在这里插入图片描述

7、tt:记录下指定方法每次调用的入参和返回信息

watch 虽然很方便和灵活,但需要提前想清楚观察表达式的拼写,这对排查问题而言要求太高,因为很多时候我们并不清楚问题出自于何方,只能靠蛛丝马迹进行猜测。

详细示例:https://arthas.aliyun.com/doc/tt.html

查询近三次指定类下的指定方法调用情况

tt com.xxx.xxxService findList -n 3

在这里插入图片描述

三、案例

1、排查内存占用过高

使用火焰图查看内存分配情况
profiler start --event alloc 采集内存分配情况
profiler getSamples 已采集的数量
profiler stop --format html 关闭采集,并生成html文件

2、排查CPU占用过高:持续监控法

使用火焰图查看CPU分配情况
profiler start --event cpu 采集内存分配情况
profiler getSamples 已采集的数量
profiler stop --format html 关闭采集,并生成html文件

3、排查CPU占用过高:实时查询法

使用thread查询cpu过高的线程
在这里插入图片描述
thread pid查看线程堆栈
在这里插入图片描述

END

创作不易,感谢点赞
创作不易,感谢点赞
创作不易,感谢点赞
创作不易,感谢点赞
创作不易,感谢点赞
创作不易,感谢点赞

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

GPT4o,GPTo1-preview, 拼

兄弟们GPT刚开的 需要上车的扣,工作用 大家一起PIN分摊点压力。 在当今数字化的时代,程序员这一职业已经从幕后走到了前台,成为推动科技进步和社会变革的关键力量。编写代码、解决问题、不断学习新技术,程序员们的日常充满了挑战与…

SpringMVC拦截器应用实例与优化

前言 本文将介绍如何使用SpringMVC的拦截器的基本使用 拦截器概念 SpringMVC拦截器(Interceptor)是一种动态拦截方法调用的机制,它能够在指定的方法调用前后执行预先设定的代码,甚至阻止原始方法的执行。拦截器在Spring MVC框架中…

利士策分享,美国“假旗”行动,是否成为了网络空间的阴霾?

利士策分享,美国“假旗”行动,是否成为了网络空间的阴霾? 在当今这个信息化时代,网络空间已经成为国家间竞争与合作的重要领域。然而,美国却频繁采取一种名为“假旗行动”的卑劣手段,污染全球网络空间,给世…

《最优化方法》

课件是学习的核心内容 这门课,作业自己交,但是老师不做记录,上课不点名, 不记录平时成绩。 第一章 最优化问题的概述 1.1 概述(和考试内容无关,了解内容) 例题1.1.1运输问题 数学模型&#x…

(37)使用MATLAB画出余弦波的频谱

文章目录 前言一、MATLAB仿真代码二、仿真结果画图 前言 首先使用MATLAB生成一段余弦信号,然后对其进行FFT变换,画出其频谱。 一、MATLAB仿真代码 代码如下: f [50, 100]; % 两个余弦波的频率 fs 1000; …

论文 | OpenICL: An Open-Source Framework for In-context Learning

主要内容: 2. 提供多种 ICL 方法: 3. 完整的教程: 4. 评估和验证: 背景: 随着大型语言模型 (LLM) 的发展,上下文学习 (ICL) 作为一种新的评估范式越来越受到关注。问题: ICL 的实现复杂&#xf…

springboot在线医疗问答平台

基于springbootvue实现的在线医疗问答平台 (源码L文ppt)4-088 4 系统设计 4.1 功能模块设计 在线医疗问答平台根据权限类型进行分类,主要可分为用户、医生和管理员三大模块。用户、医生模块主要实现了修改个人信息,查看…

力扣题31~40

题31(中等): 分析: 其实这题题目比较难懂,题目还是挺简单的 我们可以从后面末尾开始,如果前一个大于后面的,说明后面不用动,如果小于,那就找仅仅大于它的数字放前面&…

一个将.Geojson文件转成shapefile和kml文件的在线页面工具

最近需要读取.geojson格式的流域边界文件。在谷歌地球桌面版和globalMapper中均无法正常读取。下面我发现的一个在线的平台可以很好实现这一功能。 GeoJSON to SHP Converter Online - MyGeodata Cloud ❤️欢迎点赞收藏❤️

2000.1-2024.7中国经济政策不确定性指数(月度)

2000.1-2024.7中国经济政策不确定性指数(月度) 1、时间:2000.1-2024.7 2、指标:Date、CNEPU 3、来源:China Economic Policy Uncertainty Index 4、说明:中国经济政策不确定性指数,用于衡量…

MongoDB安装保姆级教程

安装MongoDB 1.下载地址 https://www.mongodb.com/try/download/community 这里选择的5版本的。 2.选择zip下载 (也可以选择msi一步步安装) 3.配置环境变量 将MongoDB的bin目录添加到path下 E:\JavaPackage\mongodb\bin 4.检查是否配置成功 cmd里执行 mongod WINR&…

JavaSE——集合12:Map接口实现类—Properties

目录 一、Properties基本介绍 二、Properties常用方法 一、Properties基本介绍 Properties类继承自HashTable类并且实现了Map接口,也是使用一种键值对的形式,来保存数据。Properties的使用特点和HashTable类似Properties还可以用于从xxx.properties文件…

“我们为什么缺少科学精神”演讲内容拆解

演讲人张双南,视频链接: https://tv.cctv.com/2017/04/23/VIDEdqzdpmxStYXAmYBdgDP7170423.shtml

【数据结构】:破译排序算法--数字世界的秩序密码(二)

文章目录 前言一.比较排序算法1.Bubble Sort冒泡排序1.1.冒泡排序原理1.2.冒泡排序过程1.3.代码实现1.4.复杂度和稳定性 2.Quick Sort快速排序2.1递归快速排序2.1.1.递归快速排序原理2.1.2.递归快速排序过程2.1.3.代码实现 2.2.非递归快速排序2.2.1.非递归快速排序原理2.2.2.非…

多线程的状态及切换流程

多线程的状态及切换流程 线程状态说明: 初始化(Init):该线程正在被创建。就绪(Ready):该线程在就绪列表中,等待 CPU 调度。运行(Running):该线程…

Arduino R3笔记24 之 Arduino如何使用MAX7219控制多个数码管?

注意:学习和写作过程中,部分资料搜集于互联网,如有侵权请联系删除。 前言:前面学习了单个数码管的控制,但是在大多场合一个数码管是满足不了使用场景的,因此对于数码管的学习,应该学会用尽可能少的端口去驱动更多的数码管,在此情况下,MAX7219比较适合我们使用。 1.M…

成都睿明智科技有限公司共创抖音电商新篇章

在当今这个数字化浪潮汹涌的时代,抖音电商以其独特的魅力迅速崛起,成为众多商家竞相追逐的新蓝海。在这片充满机遇与挑战的领域中,成都睿明智科技有限公司凭借其专业的服务、创新的策略和敏锐的市场洞察力,成为了众多商家信赖的合…

吴恩达深度学习笔记:卷积神经网络(Foundations of Convolutional Neural Networks)3.5-3.6

目录 第四门课 卷积神经网络(Convolutional Neural Networks)第三周 目标检测(Object detection)3.5 Bounding Box 预测(Bounding box predictions)3.6 交并比(Intersection over union&#xf…

leetcode36:有效的数独

请你判断一个 9 x 9 的数独是否有效。只需要 根据以下规则 ,验证已经填入的数字是否有效即可。 数字 1-9 在每一行只能出现一次。数字 1-9 在每一列只能出现一次。数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。(请参考示例图) 注…

详解腐烂的苹果(图+代码+广度优先遍历)

描述 给定一个 nm nm 的网格,其中每个单元格中可能有三种值中的一个 0 , 1 , 2。其中 0 表示这个格子为空、1 表示这个格子有一个完好的苹果,2 表示这个格子有一个腐烂的苹果。腐烂的苹果每分钟会向上下左右四个方向的苹果传播一次病菌,并导…