内容简介:Arthas(阿尔萨斯)是Alibaba开源的Java诊断性能监控分析工具,它不需要做任何的参数配置,就可以直观的获取各种维度的性能数据。通过阅读官网的介绍,可以看到,当我们遇到以下类似问题而束手无策时,Arthas可以帮助我们解决:Arthas支持JDK 6+,支持Linux/Mac/Winodws,采用命令行交互模式,同时提供丰富的 Tab 自动补全功能,进一步方便进行问题的定位和诊断。
Arthas(阿尔萨斯)是Alibaba开源的 Java 诊断性能监控分析工具,它不需要做任何的参数配置,就可以直观的获取各种维度的性能数据。通过阅读官网的介绍,可以看到,当我们遇到以下类似问题而束手无策时,Arthas可以帮助我们解决:
- 这个类从哪个 jar 包加载的?为什么会报各种类相关的 Exception?
- 我改的代码为什么没有执行到?难道是我没 commit?分支搞错了?
- 遇到问题无法在线上 debug,难道只能通过加日志再重新发布吗?
- 线上遇到某个用户的数据处理有问题,但线上同样无法 debug,线下无法重现!
- 是否有一个全局视角来查看系统的运行状况?
- 有什么办法可以监控到JVM的实时运行状态?
Arthas支持JDK 6+,支持Linux/Mac/Winodws,采用命令行交互模式,同时提供丰富的 Tab 自动补全功能,进一步方便进行问题的定位和诊断。
安装
使用arthas-boot推荐安装方式,下载arthas-boot.jar,然后用java -jar的方式启动:
获取arthas
- 在线获取
wget https://alibaba.github.io/arthas/arthas-boot.jar
- 离线获取
https://alibaba.github.io/arthas/arthas-boot.jar
- 如果下载速度比较慢,可以使用aliyun的镜像:
java -jar arthas-boot.jar --repo-mirror aliyun --use-http
- 如果从github下载有问题,可以使用gitee镜像
wget https://arthas.gitee.io/arthas-boot.jar
启动arthas
java -jar arthas-boot.jar
查看帮助信息
java -jar arthas-boot.jar -h
第一次使用arthas时,会自动下载一些依赖包,等待下载完成,就会进入到arthas提供的命令行界面。
dashboard 实时监控数据
dashboard命令可以查看当前系统的实时数据面板。
图表说明
- ID:Java级别的线程ID,注意这个ID不能跟jstack中的nativeID一一对应
- NAME:线程名
- GROUP:线程组名
- PRIORITY: 线程优先级, 1~10之间的数字,越大表示优先级越高
- STATE:线程的状态
- CPU:线程消耗的cpu占比,采样100ms,将所有线程在这100ms内的cpu使用量求和,再算出每个线程的cpu使用占比。
- TIME:线程运行总时间,数据格式为分:秒
- INTERRUPTED:线程当前的中断位状态
- DAEMON: 是否是daemon线程
输入 Q 或者 Ctrl+C 可以退出dashboard命令。
Thread 查看线程的栈
查看当前线程信息,查看线程的堆栈,thread 1 命令会打印线程ID 1的栈。
同样,Arthas支持管道,可以用 thread 1 | grep 'main(' 查找到main class。如下,可以看到main class是demo.MathGame。
参数说明
- id: 线程id
- [n:]:指定最忙的前N个线程并打印堆栈
- [b]:找出当前阻塞其他线程的线程
- [i <value>]:指定cpu占比统计的采样间隔,单位为毫秒
Sc(Search-Class)
查看JVM已加载的类信息,搜索出所有已经加载到 JVM 中的 Class 信息。
sc -d *MathGame
参数说明
- class-pattern:类名表达式匹配
- method-pattern:方法名表达式匹配
- [d]:输出当前类的详细信息,包括这个类所加载的原始文件来源、类的声明、加载的ClassLoader等详细信息。如果一个类被多个ClassLoader所加载,则会出现多次
- [E]:开启正则表达式匹配,默认为通配符匹配
- [f]:输出当前类的成员变量信息(需要配合参数-d一起使用)
- [x:]:指定输出静态变量时属性的遍历深度,默认为 0,即直接使用 toString 输出
Jad
反编译指定已加载类的源码,可以通过 jad 命令来反编译代码,jad 命令将 JVM 中实际运行的 class 的 byte code 反编译成 java 代码,便于你理解业务逻辑。
jad demo.MathGame
默认情况下,反编译结果里会带有ClassLoader信息,通过--source-only选项,可以只打印源代码。方便和mc/redefine命令结合使用。输入 Q 或者 Ctrl+C 退出watch命令。
参数说明
- class-pattern:类名表达式匹配
- [c:]:类所属 ClassLoader 的 hashcode
- [E]:开启正则表达式匹配,默认为通配符匹配
jvm
查看当前JVM信息
trace
方法内部调用路径,并输出方法路径上的每个节点上耗时,trace 命令能主动搜索 class-pattern/method-pattern 对应的方法调用路径,渲染和统计整个调用链路上的所有性能开销和追踪调用链路。
我们可以看到 “---[0.128988ms] java.io.PrintStream:println() #28”耗时较长。
参数说明
- class-pattern:类名表达式匹配
- method-pattern:方法名表达式匹配
- condition-express:条件表达式
- [E]:开启正则表达式匹配,默认为通配符匹配
- [n:]:命令执行次数
- #cost:方法执行耗时
stack
输出当前方法被调用的调用路径,很多时候我们都知道一个方法被执行,但这个方法被执行的路径非常多,或者你根本就不知道这个方法是从那里被执行了,此时你需要的是 stack 命令。
参数说明
- class-pattern:类名表达式匹配
- method-pattern:方法名表达式匹配
- condition-express:条件表达式
- [E]:开启正则表达式匹配,默认为通配符匹配
- [n:]:执行次数限制
Arthas 其他基础命令
- help:查看命令帮助信息
- cls:清空当前屏幕区域
- session:查看当前会话的信息
- reset:重置增强类,将被 Arthas 增强过的类全部还原,Arthas 服务端关闭时会重置所有增强过的类
- version:输出当前目标 Java 进程所加载的 Arthas 版本号
- history:打印命令历史
- quit:退出当前 Arthas 客户端,其他 Arthas 客户端不受影响
- shutdown:关闭 Arthas 服务端,所有 Arthas 客户端全部退出
- keymap:Arthas快捷键列表及自定义快捷键
更多详细介绍,可阅读 Arthas 用户文档 — Arthas 3.1.1 文档
以上所述就是小编给大家介绍的《阿里重磅开源性能测试神器,性能监控分析工具 Arthas》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Building Websites with Joomla!
H Graf / Packt Publishing / 2006-01-20 / USD 44.99
This book is a fast paced tutorial to creating a website using Joomla!. If you've never used Joomla!, or even any web content management system before, then this book will walk you through each step i......一起来看看 《Building Websites with Joomla!》 这本书的介绍吧!