性能测试全栈笔记:56.性能监控神器-Arthas(阿尔萨斯)
今天给大家介绍一款阿里巴巴开源性能分析工具Arthas,中文名:阿尔萨斯,堪称神器。
官方网站:https://alibaba.github.io/arthas/index.html
以上网址不太好打开,可以用这个:https://arthas.aliyun.com/doc/index.html
首先,Arthas能做什么?(以下为官网介绍)
Arthas 是Alibaba开源的Java诊断工具,深受开发者喜爱。
当你遇到以下类似问题而束手无策时,Arthas可以帮助你解决:
- 这个类从哪个 jar 包加载的?为什么会报各种类相关的 Exception?
- 我改的代码为什么没有执行到?难道是我没 commit?分支搞错了?
- 遇到问题无法在线上 debug,难道只能通过加日志再重新发布吗?
- 线上遇到某个用户的数据处理有问题,但线上同样无法 debug,线下无法重现!
- 是否有一个全局视角来查看系统的运行状况?
- 有什么办法可以监控到JVM的实时运行状态?
- 怎么快速定位应用的热点,生成火焰图?
- 怎样直接从JVM内查找某个类的实例?
Arthas支持JDK 6+,支持Linux/Mac/Windows,采用命令行交互模式,同时提供丰富的 Tab 自动补全功能,进一步方便进行问题的定位和诊断。
下面以“我爱测试网”项目体验Arthas的用法:
1.启动项目:
2.下载arthas工具
下载方式1:wget https://alibaba.github.io/arthas/arthas-boot.jar
下载方式2:浏览器打开:https://alibaba.github.io/arthas/arthas-boot.jar,文件下载好后上传到linux服务器
蓝奏云下载:https://shanqianwl.lanzoul.com/iXIemyqy8zc
注意:第一种需安装wget组件:yum -y install wget
3.启动arthas工具
前提条件:需配置jdk环境:JDK安装及配置教程(Linux版)
执行命令:java -jar arthas-boot.jar
说明:执行成功后,arthas提供了一种命令行交互方式,arthas会检测当前服务器上的java进程,并将进程列表展示出来,用户输入对应编号(1,2,3,4…)进行选择,然后回车,红色框中,进程[1]就是tomcat进程。
第一次使用arthas会自动下载一些依赖包,等待下载完成就会进入到arthas命令行界面,如下图:
4.常用的监控命令/数据:
1)整体dashboard数据
在arthas命令行界面,输入dashboard
命令,会实时展示当前tomcat的多线程状态,jvm各区域,GC情况等信息
认识:
- 最上面是thread(线程)区:
- 中间是menory(内存)和GC区
- 最后是Runtime、tomcat情况
2)查看线程监控
常用参数:
- 输入
thread
会显示所有线程的状态信息 - 输入
thread -n 3
会显示当前最忙的3个线程 ,可以用来排查CPU消耗 - 输入
thread -b
会显示当前处于blocked状态的线程,可以排查锁问题
3)jvm监控
执行命令:jvm
,查看jvm详细的性能数据(java虚拟机)
4)函数耗时监控
一般来说一个接口的性能不好,其实就是接口响应时间较长造成的,具体代码中哪个函数耗时较长,我们可以使用trace命令来监控看以下。
执行命令格式:trace 类名 函数名
了解几个核心参数:
time:接口入口函数总耗时
后面一般跟关联函数。。。每个关联函数会有对应耗时,比较得出最慢的那个函数,接下来就要去代码里进行分析再优化。
上述是Arthas性能监控神器在性能测试中常用的几个监控参数(及命令),关于Arthas更多维度的监控,大家可以参照官网知识点学习。