原文:https://www.cnblogs.com/testfan2019/p/11038791.html

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

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

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

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

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

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

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

官方网站:

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

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

接下来,我们找个项目实际体验一下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 -jcn.testfan.perf.beihe.pinter.http.CaseController time

解释:

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

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

time是接口的入口函数

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

其中getDataFromDb函数耗时200ms

getDataFromRedis函数耗时100ms

getDataFromOuter函数耗时50ms

process函数耗时20ms

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

﹏﹏﹏﹏

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

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

阿里巴巴开源性能监控神器Arthas jvm的更多相关文章

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

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

  2. 开源性能监控分析工具glowroot

    最近在做java性能瓶颈定位分析工具的研究,发现glowroot工具是一款相当不错的APM工具(Wonderful tool),架构简洁,部署简单,上手容易. 经过亲身搭建体验,总结了产品的架构,工具 ...

  3. JVM系列十(虚拟机性能监控神器 - BTrace).

    BTrace 是什么? BTrace 是一个动态安全的 Java 追踪工具,它通过向运行中的 Java 程序植入字节码文件,来对运行中的 Java 程序热更新,方便的获取程序运行时的数据信息,并且,保 ...

  4. 服务器性能监控神器nmon使用介绍

    介绍 Nmon (Nigel's Monitor)是由IBM 提供.免费监控 AIX 系统与 Linux 系统资源的工具.该工具可将服务器系统资源耗用情况收集起来并输出一个特定的文件,并可利用 exc ...

  5. <JVM下篇:性能监控与调优篇>03-JVM监控及诊断工具-GUI篇

    笔记来源:尚硅谷JVM全套教程,百万播放,全网巅峰(宋红康详解java虚拟机) 同步更新:https://gitee.com/vectorx/NOTE_JVM https://codechina.cs ...

  6. jvm调优神器——arthas

    在上一篇<jvm调优的几种场景>中介绍了几种常见的jvm方面调优的场景,用的都是jdk自带的小工具,比如jps.jmap.jstack等.用这些自带的工具排查问题时最大的痛点就是过程比较麻 ...

  7. Linux下Java性能监控

    Linux下Java性能监控 一.JVM堆内存使用监控 获取thread dump的3种方法: 1)使用$JAVA_HOME/bin/jcosole中的MBean,到MBean>com.sun. ...

  8. <JVM下篇:性能监控与调优篇>01-概述篇-02-JVM监控及诊断工具-命令行篇

    笔记来源:尚硅谷JVM全套教程,百万播放,全网巅峰(宋红康详解java虚拟机) 同步更新:https://gitee.com/vectorx/NOTE_JVM https://codechina.cs ...

  9. jvm系列(五):tomcat性能调优和性能监控(visualvm)

    tomcat服务器优化 1.JDK内存优化 根据服务器物理内容情况配置相关参数优化tomcat性能.当应用程序需要的内存超出堆的最大值时虚拟机就会提示内存溢出,并且导致应用服务崩溃.因此一般建议堆的最 ...

随机推荐

  1. LeetCode_409. Longest Palindrome

    409. Longest Palindrome Easy Given a string which consists of lowercase or uppercase letters, find t ...

  2. Spring MVC -- MVC设计模式(演示4个基于MVC框架的案例)

    对于简单的Java Web项目,我们的项目仅仅包含几个jsp页面,由于项目比较小,我们通常可以通过链接方式进行jsp页面间的跳转. 但是如果是一个中型或者大型的项目,上面那种方式就会带来许多维护困难, ...

  3. Ingress 访问日志分析与监控

    阿里云Ingress除了提供外部可访问的 URL.负载均衡.SSL.基于名称的虚拟主机外,还支持将所有用户的HTTP请求日志记录到标准输出中.同时Ingress访问日志与阿里云日志服务打通,您可以使用 ...

  4. UE4 ios环境搭建备忘

    1.windows.mac安装证书 2.安装xcode .app -- 路径可以拖入 sudo gem install xcodeproj 3.错误处理 Setting up Mono Running ...

  5. php实用功能小记

    1.任意数目的参数 function fun(){ $args = func_get_args(); foreach ($args as $k => $v) { echo "arg&q ...

  6. 【神经网络与深度学习】【CUDA开发】服务器(多GPU)caffe安装和编译

    一. 前提 多GPU交互在神经网络是常见的,所以在安装caffe之前需要安装NCCL,来保证多GPU之间的相互交流.  多GPU,这里指的是2个及2个以上英伟达显卡,而不是笔记本中的集显和独显. 二. ...

  7. 【NOIP2017】宝藏 题解(状压DP)

    题目描述 参与考古挖掘的小明得到了一份藏宝图,藏宝图上标出了 nnn 个深埋在地下的宝藏屋, 也给出了这 nnn 个宝藏屋之间可供开发的m mm 条道路和它们的长度. 小明决心亲自前往挖掘所有宝藏屋中 ...

  8. Linux组管理、用户管理、查看用户信息、usermod、which、切换用户、修改文件具体权限

    组管理 提示:创建组/删除组的终端命令都需要通过sudo执行 序号 命令 作用 01 groupadd组名 添加组 02 groupdel组名 删除组 03 cat/etc/group 确认组信息 0 ...

  9. Windows下Charles抓包https协议配置

    最近设置https协议对手机app抓包遇到一些问题,现在在这里记录下,以防以后遇到问题没有记录 1.从官网下载Charles的安装包 https://www.charlesproxy.com/down ...

  10. HA 高可用集群概述及其原理解析

    HA 高可用集群概述及其原理解析 1. 概述 1)所谓HA(High Available),即高可用(7*24小时不中断服务). 2)实现高可用最关键的策略是消除单点故障.HA严格来说应该分成各个组件 ...