Arthas性能监控工具介绍【杭州多测师_王sir】

今天跟大家介绍一款阿里巴巴开源的性能分析神器 Arthas(阿尔萨斯)
官方网站:https://alibaba.github.io/arthas/index.html
Arthas 能为你做什么事情呢?我们先来看一下官网的介绍。
当你遇到以下类似问题而束手无策时,Arthas 可以帮助你解决:
1. 这个类从哪个 jar 包加载的?为什么会报各种类相关的 Exception?
2. 我改的代码为什么没有执行到?难道是我没 commit?分支搞错了?
3. 遇到问题无法在线上 debug,难道只能通过加日志再重新发布吗?
4. 线上遇到某个用户的数据处理有问题,但线上同样无法 debug,线下无法重现!
5. 是否有一个全局视角来查看系统的运行状况?
6. 有什么办法可以监控到 JVM 的实时运行状态?
Arthas支持JDK 6+,支持Linux/Mac/Winodws,采用命令行交互模式,同时提供丰富的 Tab 自
动补全功能,进一步方便进行问题的定位和诊断。
接下来,我们找个项目实际体验一下 Arthas

一、Linux 上启动被监控的项目
先来看下 Linux 服务端部署的项目,一个 JavaWeb 项目,基于 tomcat 部署,服务端 tomcat
启动后,通过浏览器访问项目首页,验证项目是否可以正常访问。

 二、下载 arthas 工具
可以直接在 Linux 上通过命令下载
wget https://alibaba.github.io/arthas/arthas-boot.jar
也可以在浏览器直接访问 https://alibaba.github.io/arthas/arthas-boot.jar,等待下载成功
后,上传到 Linux 服务器上。

 三、启动 arthas 工具(需要配置好 jdk)
执行命令: java -jar arthas-boot.jar
执行成功后,arthas 提供了一种命令行方式的交互方式,arthas 会检测当前服务器上的
Java 进程,并将进程列表展示出来,用户输入对应的编号(1、2、3、4…)进行选择,然
后回车(见红色框,进程[1]就是 tomcat 进程)。

第一次使用 arthas 需要自动下载一些依赖包,等待下载完成,就会进入到 arthas 提供的命令行界面。

四、常用的一些监控数据
1、整体 dashboard 数据 
在 arthas 的命令行界面,输入 dashboard,会实时展示当前 tomcat 的多线程状态、Jvm 各
区域、GC 情况等信息

2、查看线程监控 
常用参数
输入 thread 会显示所有线程的状态信息
输入 thread -n 3 会显示当前最忙的 3 个线程,可以用来排查线程 CPU 消耗
输入 thread -b 会显示当前处于 BLOCKED 状态的线程,可以排查线程锁的问题

3、jvm 监控 
输入 jvm,查看 jvm 详细的性能数据

4、函数耗时监控 
通常说一个接口性能不好,其实就是接口响应时间比较长造成的,具体代码中哪个函数耗时
比较长呢?可以使用 trace 功能来监控一下
trace 类名 函数
trace cn.testfan.perf.beihe.pinter.http.CaseController time
解释:
cn.testfan.perf.beihe.pinter.http.CaseController 是接口所在的类
time 是接口的入口函数

通过圈起来的部分可以看到,接口的入口函数 time 总耗时 371ms
其中 getDataFromDb 函数耗时 200ms
getDataFromRedis 函数耗时 100ms
getDataFromOuter 函数耗时 50ms
process 函数耗时 20ms
很明显,最慢的函数已经找到了,接下里就要去对代码进行进一步分析,然后再进行优化。
上述几个命令只是性能测工作中常用的一些操作,Arthas 还有很多其他维度的监控数据,大
家可以去官网看下用户手册学习更多操作。

posted @   多测师_树哥  阅读(24)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
历史上的今天:
2022-08-30 杭州市民卡面试题【杭州多测师】【杭州多测师_王sir】
2020-08-30 java编程语言中的多态【多测师_王sir】
点击右上角即可分享
微信分享提示