前言

当我们在做线上压测时,有个问题就是很多工具在线上不方便用,如jprofiler,因为线上环境比较谨慎,也不太方面加一堆配置参数。那么这里我们推荐使用Arthas这个工具

Arthas工具介绍

Arthas是阿里巴巴开源的性能分析神器。Arthas能为你做什么事情呢?我们来看一下官网的介绍。官网地址: https://alibaba.github.io/arthas/index.html.

当你遇到一下类似的问题而束手无策的时候,Arthas可以帮你解决:

  1. 这个类从哪个jar包加载的?为什么会报各种各类相关的Exception?
  2. 我改的代码为什么没有执行到?难道我没有commit?分支搞错了?
  3. 遇到问题无法线上debug,难道只能通过添加日志在重新发布吗?
  4. 线上遇到某个用户的数据有问题,但是线上同样无法debug,线下无法重现!
  5. 是否有一个全局视角来查看系统运行状况?
  6. 有什么办法可以监控到JVM的实施运行状态?

Arthas 支持JDK6+,支持Linux、Windows、Mac,采用命令行交互模式,同时提供丰富的Tab自动补全功能,进一步方便进行问题的定位和分析。

下载1. 这个类从哪个jar包加载的?为什么会报各种各类相关的Exception?
2. 我改的代码为什么没有执行到?难道我没有commit?分支搞错了?
3. 遇到问题无法线上debug,难道只能通过添加日志在重新发布吗?
4. 线上遇到某个用户的数据有问题,但是线上同样无法debug,线下无法重现!
5. 是否有一个全局视角来查看系统运行状况?
6. 有什么办法可以监控到JVM的实施运行状态?

Arthas 支持JDK6+,支持Linux、Windows、Mac,采用命令行交互模式,同时提供丰富的Tab自动补全功能,进一步方便进行问题的定位和分析。

下载Arthas

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

wget https://alibaba.github.io/arthas/arthas-boot.jar

或者也可以再浏览器直接下载jar包,等待下载成功后,上传到 Linux 服务器上。

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

启动 arthas 工具

主要使用arthas需要安装jdk环境。

安装成功之后,执行如下命令启动 arthas

java -jar arthas-boot.jar

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

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


整体dashboard数据

在arthas的命令行界面,输入 dashboard
现在我们可以看到一个实时的监控界面。我们可以在第一栏看到线程的状态、优先级以及占用哪个线程占用的cpu比较高。

那么我们可以通过这个图标看到有没有线程当前处于阻塞、或者TIME_WATING。有时候出现cpu比较高的场景,我们可以通过这里看到具体是哪一个线程占用的cpu比较高。我们找到这个线程,就可以通过 jstat查看到该进程当前所在做的事情。

但是大家这里需要注意的是,这里的cpu并不是占用了我们操作系统多少cpu使用率,这里指的是我们这个进程占了多少cpu,其中某一个线程占了该进程的百分之多少。

第二个区域展示的内存,我们可以看到堆内存总共使用了多少、一共有多少内存、最大内存是多少,以及内存占用的百分比情况。

所以这个dashboard可以帮我们检测线程和内存的总体使用情况。

查看线程监控

我们前面 dashboard 只是看了线程的大体情况,如果说我们想要看线程的具体情况,应该怎么看呢?

Arthas 提供了如下参数,可以看到线程的具体信息。

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

thread

thread -n 3

这个命令可以把占用cpu消耗最高的线程的堆栈信息打印出来,可以用来排查线程CPU消耗

thread -b

这个命令可以抓到当前处于BLOCKED状态的线程,可以排查线程锁的问题 ,因为目前我没有阻塞的线程,所有没有。

jvm监控

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

函数耗时监控

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

trace 类名 函数

这个命令可以看到压测具体那一个函数耗时时间最长,接下来我们就可以去对代码进行进一步分析,然后再进行优化。

Arthas性能监控相关推荐

  1. 神器 JMH + Arthas 性能监控

    点击上方"朱小厮的博客",选择"设为星标" 后台回复"书",获取 后台回复"k8s",可领取k8s资料 来源 | bry ...

  2. 神器 JMH Arthas 性能监控

    点击下方"IT牧场",选择"设为星标" 来源 | bryantchang.github.io/2019/12/08/java-profile-tools/ 问题 ...

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

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

  4. 阿里开源性能测试神器,性能监控分析工具Arthas

    Arthas(阿尔萨斯)是Alibaba开源的Java诊断性能监控分析工具,它不需要做任何的参数配置,就可以直观的获取各种维度的性能数据.通过阅读官网的介绍,可以看到,当我们遇到以下类似问题而束手无策 ...

  5. JVM学习笔记之-JVM性能监控-JVM监控及诊断工具-GUI方式-Visual VM-JProfiler-Arthas

    00-谈GUI工具前的补充 补充1:内存泄漏 内存泄漏的理解与分类 何为内存泄漏( memory leak) 可达性分析算法来判断对象是否是不再使用的对象,本质都是判断一个对象是否还被引用.那么对于这 ...

  6. JVM学习笔记之-JVM性能监控-JVM监控及诊断工具-命令行方式

    性能优化的步骤 第1步(发现问题):性能监控 一种以非强行或者入侵方式收集或查看应用运营性能数据的活动. 监控通常是指一种在生产.质量评估或者开发环境下实施的带有预防或主动性的活动. 当应用相关干系人 ...

  7. 调优 | 别再说你不会 JVM 性能监控和调优了

    Hi ! 我是小小,今天是本周的最后一篇,本篇将会着重讲解关于 JVM 调优和性能监控方面的内容 常用工具 常用工具主要有 JDK 自带工具与 Arthas 这两种工具. JDK 自带工具 jps 虚 ...

  8. visualvm远程监控jvm_别再说你不会 JVM 性能监控和调优了,看完这篇再发言

    常用工具 常用工具主要有 JDK 自带工具与 Arthas 这两种工具. JDK 自带工具 jps 虚拟机进程状况工具 用于查看虚拟机进程状况的工具 命令示例 $ jps15236 Jps14966 ...

  9. JVM笔记-性能监控与分析工具

    1. 概述 前面几篇文章分析了 JVM 的一些概念,大部分都是偏理论的,本文介绍一些可以实操的 JVM 性能监控与分析工具. 主要包括 JDK 自带的一些常用工具,以及阿里开源的 Java 诊断工具 ...

最新文章

  1. UEFI、BIOS、Secure Boot的关系和知识介绍
  2. 多线程在任何情况下均能提高效率吗?
  3. 将服务器置于最终用户附近可解决性能问题?—Vecloud微云
  4. 【Maven学习】Nexus OSS私服仓库的备份与迁移
  5. java集群解析文件_干货:一文详解Redis集群原理核心内容
  6. linux网络保存退出,linux编辑文件后如何保存退出
  7. [转] 能ping通,但不能上网.
  8. video 标签内 音量_HTML5 视频(Video)元素使用详解
  9. 如何恢复Mac上已删除的文件?
  10. 模拟电路 - 半导体基本知识
  11. linux系统桌面放大镜,Ubuntu下怎样使用放大镜辅助功能
  12. #define宏定义(每天一个小虾米)
  13. TSV文件与CSV文件的区别
  14. 【OCM第17期开班】第17期11g OCM培训将于7月22号晚20点在腾讯课堂开班,第1场考试免费培训!!!...
  15. stackoverflow热门问题(二)- 如何确定C的数组的大小
  16. SpinalNet: Deep Neural Network with Gradual Input
  17. 利用beef盗取浏览器cookie,并实现页面跳转
  18. 小白都能看懂的实战教程 手把手教你Python Web全栈开发(DAY 3)
  19. PCL学习(一)显示PCD文件
  20. FPGA学习之 直接数字频率合成器(DDS)

热门文章

  1. 什么是python中的惰性评估
  2. SuperMap iClient3D for WebGL教程(Entity)-LabelGraphics
  3. 什么是自适应模板?自适应模板有什么优点缺点
  4. linux下u盘网卡驱动,通过u盘给linux安装网卡驱动的做法——深圳培训linux
  5. 100、基于51单片机数码管温控 温度控制风扇系统设计
  6. python第三章实操作业
  7. 卷积、自相关函数、功率谱密度
  8. 1.8 leveldb vs rocksdb 优劣分析 对 write stalling stal 的调优
  9. java中英文获取首字母之后分组排序
  10. Vector 删除元素