阿里巴巴开源性能监控神器Arthas初体验

摘要:
今天跟大家介绍一款阿里巴巴开源的性能分析神器Arthas官方网站:https://alibaba.github.io/arthas/index.htmlArthas能为你做什么事情呢?接下来,我们找个项目实际体验一下Arthas。﹏﹏﹏﹏上述几个命令只是性能测工作中常用的一些操作,Arthas还有很多其他维度的监控数据,大家可以去官网看下用户手册学习更多操作。通过对Arthas的初步使用可以看到,Arthas是一个功能非常强大的性能监控工具,而且使用非常方便,不需要做任何的参数配置,就可以直观的获取各种维度的性能数据。

如果问性能测试中最难的是哪部分,相信很多人会说“性能调优”。确实是这样,性能调优是一个非常复杂、技术含量很高的工作。涉及到的知识面很广。以我多年从业经验来看,在企业里,大多数的性能调优都是由开发架构师来完成,涉及到数据库的,可能需要DBA的介入。

而性能测试工程师在实际工作中,主要的职责是发现问题和定位问题,确定性能问题出现在哪部分,需要定位到具体函数、类、SQL,某些参数配置、某些硬件限制等。如果能做到这一点,那就是一个很称职的性能测试工程师了。

那么如何去定位问题呢?不能靠猜测和想象,这个时候需要借助一些专业的工具来协助,以JAVA语言来说,如jdk自带的jvisualvm等免费工具,以及商业化工具Jprofiler。

阿里巴巴开源性能监控神器Arthas初体验第1张

阿里巴巴开源性能监控神器Arthas初体验第2张

这两款工具在业界知名度也比较高,他们的优点可以图形界面上看到各维度的性能数据,使用者根据这些数据进行综合分析,然后判断哪里出现了性能问题

但是这两款工具也有个缺点,都必须在服务端项目进程中配置相关的监控参数。然后工具通过远程连接到项目进程,获取相关的数据。这样就会带来一些不便,比如线上环境的网络是隔离的,本地的监控工具根本连不上线上环境。并且类似于jprofiler这样的商业工具,是需要付费的(可以破解,但是希望大家支持正版)

那么有没有一款工具不需要远程连接,也不需要配置监控参数,同时也提供了丰富的性能监控数据呢?

今天跟大家介绍一款阿里巴巴开源的性能分析神器Arthas(阿尔萨斯)

官方网站:

https://alibaba.github.io/arthas/index.html

Arthas能为你做什么事情呢?我们先来看一下官网的介绍。

阿里巴巴开源性能监控神器Arthas初体验第3张

接下来,我们找个项目实际体验一下Arthas。

一、Linux上启动被监控的项目

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

阿里巴巴开源性能监控神器Arthas初体验第4张

二、下载arthas工具

可以直接在Linux上通过命令下载

wgethttps://alibaba.github.io/arthas/arthas-boot.jar

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

阿里巴巴开源性能监控神器Arthas初体验第5张

三、启动arthas工具(需要配置好jdk)

执行命令:java -jar arthas-boot.jar

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

阿里巴巴开源性能监控神器Arthas初体验第6张

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

阿里巴巴开源性能监控神器Arthas初体验第7张

四、常用的一些监控数据

1、整体dashboard数据

在arthas的命令行界面,输入dashboard,会实时展示当前tomcat的多线程状态、Jvm各区域、GC情况等信息

阿里巴巴开源性能监控神器Arthas初体验第8张

2、查看线程监控

常用参数

输入thread会显示所有线程的状态信息

输入thread -n 3会显示当前最忙的3个线程,可以用来排查线程CPU消耗

输入thread -b 会显示当前处于BLOCKED状态的线程,可以排查线程锁的问题

阿里巴巴开源性能监控神器Arthas初体验第9张

3、jvm监控

输入jvm,查看jvm详细的性能数据

阿里巴巴开源性能监控神器Arthas初体验第10张

4、函数耗时监控

通常说一个接口性能不好,其实就是接口响应时间比较长造成的,具体代码中哪个函数耗时比较长呢?可以使用trace功能来监控一下

trace -jcn.testfan.perf.beihe.pinter.http.CaseController time

解释:

-j参数可以过滤掉jdk自身的函数

cn.testfan.perf.beihe.pinter.http.CaseController是接口所在的类

time是接口的入口函数

阿里巴巴开源性能监控神器Arthas初体验第11张

通过圈起来的部分可以看到,接口的入口函数time总耗时371ms

其中getDataFromDb函数耗时200ms

getDataFromRedis函数耗时100ms

getDataFromOuter函数耗时50ms

process函数耗时20ms

很明显,最慢的函数已经找到了,接下里就要去对代码进行进一步分析,然后再进行优化。

﹏﹏﹏﹏

上述几个命令只是性能测工作中常用的一些操作,Arthas还有很多其他维度的监控数据,大家可以去官网看下用户手册学习更多操作。

通过对Arthas的初步使用可以看到,Arthas是一个功能非常强大的性能监控工具,而且使用非常方便,不需要做任何的参数配置,就可以直观的获取各种维度的性能数据。但是拿到这些原始监控数据后,你可能会发现再强大的监控工具也只能提供一些数据,具体问题还是靠人来进行分析,而这点才是最关键的。

面对各类监控数据,如何筛选出有效的数据进行分析?

线程中为什么会出现大量WAITTING、BLOCKED?

Jvm中各种指标都是什么意思,哪些指标出现了异常情况?

服务器负载居高不下,如何对代码进行定位排查?

面对这些问题,是不是有一种手足无措、即将窒息的感觉?

不要慌,这个时候,你就需要来testfan学习一下了!

你想要的,尽在这里

官网:http://testfan.cn/list/2/265.htm

作  者:Testfan 北河
出  处:微信公众号:自动化软件测试平台
版权说明:欢迎转载,但必须注明出处,并在文章页面明显位置给出文章链接

免责声明:文章转载自《阿里巴巴开源性能监控神器Arthas初体验》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇移动端媒体查询的一些尺寸参考element ui设置表格表头高度和每一行的高度下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Windows多线程多任务设计初步(转)

Windows多线程多任务设计初步 [前言:]当前流行的Windows操作系统,它能同时运行几个程序(独立运行的程序又称之为进程),对于同一个程序,它又可以分成若干个独立的执行流,我们称之为线程,线程提供了多任务处理的能力。用进程和线程的观点来研究软件是当今普遍采用的方法,进程和线程的概念的出现,对提高软件的并行性有着重要的意义。现在的应用软件无一不是多线...

Android优化总结

极力推荐文章:欢迎收藏Android 干货分享 文章转载网络 原文地址如下:https://juejin.im/post/5d072dbc51882540b7104709 1.OOM和崩溃优化 1.2 ANR优化 ANR的产生需要满足三个条件 主线程:只有应用程序进程的主线程响应超时才会产生ANR; 超时时间:产生ANR的上下文不同,超时时间也会...

并发系列(1)之 Thread 详解

本文主要结合 java.lang.Thread 源码,梳理 Java 线程的整体脉络; 一、线程概述 对于 Java 中的线程主要是依赖于系统的 API 实现的,这一点可以从 java.lang.Thread;源码中关键的方法都是 native 方法看出,也可以直接查看 OpenJDK 源码看出来,这一点后面还会讲到;对于 JDK1.8 而言,他的 Win...

java高并发解决方案

转载https://blog.csdn.net/GavinZhera/article/details/86471828 知识点 线程安全,线程封闭,线程调度,同步容器,并发容器,AQS,J.U.C,等等 高并发解决思路与手段 扩容:水平扩容、垂直扩容 缓存:Redis、Memcache、GuavaCache等 队列:Kafka、RabitMQ、Rocke...

【Python之路】特别篇--多线程与多进程

并发 与 并行 的区别: 解释一:并发是在同一实体上的多个事件,并行是在不同实体上的多个事件; 解释二:并发是指两个或多个事件在同一时间间隔发生,而并行是指两个或者多个事件在同一时刻发生。 并发:就是同时做多件事情。 例如:终端用户程序利用并发功能,在输入数据的同时响应用户输入。服务器利用并发,在处理第一个请求的同时响应第二个请求。只要你希望程序同时做多件...

mysql版本

MySQL 的官网下载地址:http://www.mysql.com/downloads/ linux下下载和安装: MySQL最新版本8.0.11(截止2018年六月份)for Linux下载 wget -P --no-check-certificate /usr https://dev.mysql.com/get/Downloads/MySQL-8....