zoukankan      html  css  js  c++  java
  • 阿里巴巴开源性能监控神器Arthas jvm

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

  • 相关阅读:
    Rotation Kinematics
    离职 mark
    PnP 问题方程怎么列?
    DSO windowed optimization 代码 (4)
    Adjoint of SE(3)
    IMU 预积分推导
    DSO windowed optimization 代码 (3)
    DSO windowed optimization 代码 (2)
    OKVIS 代码框架
    DSO windowed optimization 代码 (1)
  • 原文地址:https://www.cnblogs.com/shihaiming/p/11388201.html
Copyright © 2011-2022 走看看