内容简介:开发的同学偶尔会用到一些命令对线上的应用进行一些诊断,以便分析排查遇到的问题。因为我们的系统都是部署在Linux系统上的,所以经常会用到一些Linux的命令或者一些小工具进行分析诊断,有时候分析一个问题要使用很多命令或者辅助工具,相对不是很方便。大家在分析线上一些问题的时候,也可能用过Btrace,Greys,Jvisualvm这些工具,在遇到一些难定位或JVM异常等疑难问题时,也可能会用上IBM HeapAnalyzer,JProfiler等工具。前不久阿里开源了一个在线诊断分析工具,Arthas,阿尔
开发的同学偶尔会用到一些命令对线上的应用进行一些诊断,以便分析排查遇到的问题。因为我们的系统都是部署在 Linux 系统上的,所以经常会用到一些Linux的命令或者一些小 工具 进行分析诊断,有时候分析一个问题要使用很多命令或者辅助工具,相对不是很方便。大家在分析线上一些问题的时候,也可能用过Btrace,Greys,Jvisualvm这些工具,在遇到一些难定位或JVM异常等疑难问题时,也可能会用上IBM HeapAnalyzer,JProfiler等工具。前不久阿里开源了一个在线诊断分析工具,Arthas,阿尔萨斯,一个非常小巧灵活的在线分析诊断工具,为我们分析定位 java 应用问题提供一个非常好的选择。八卦一下,为什么起名字叫阿尔萨斯,个人推测开发这工具的哥们或者团队里面有很多war3的粉丝?war3的粉丝都知道,洛丹伦的堕落王子阿尔萨斯手里的大杀器霜之忧伤,一把强大的邪恶利剑,相当之厉害,Arthas就是这样一把分析、诊断、定位java应用问题的利剑。
上面废话一堆,下面就一起来看看这个工具能干些啥吧。这里先说明下,因为官方文档写得已经很详细了,很多工具的命令或者用法,我这里简单做下分类和提炼,方便大家快速了解这个工具。 Arthas能做什么?Arthas官方文档里面是这样说的:
- 这个类从哪个 jar 包加载的?为什么会报各种类相关的 Exception?
- 我改的代码为什么没有执行到?难道是我没 commit?分支搞错了?
- 遇到问题无法在线上 debug,难道只能通过加日志再重新发布吗?
- 线上遇到某个用户的数据处理有问题,但线上同样无法 debug,线下无法重现!
- 是否有一个全局视角来查看系统的运行状况?
- 有什么办法可以监控到JVM的实时运行状态?
除了官方文档里面提到的这几点,它还能对方法的入参、出参进行监控,记录方法内部调用路径,并输出方法路径上的每个节点上耗时,方法watch条件很难触发时可以后台异步执行监控,还有死锁、jar包冲突、占用CUP过大的线程分析等问题。
Arthas安装
curl -L https://alibaba.github.io/arthas/install.sh | sh
也可以直接下载Jar包进行安装
Arthas启动
./as.sh 以rober为例,这里选择3回车
Arthas命令一览
基础命令
help——查看命令帮助信息
cls——清空当前屏幕区域
session——查看当前会话的信息
reset——重置增强类,将被 Arthas 增强过的类全部还原,Arthas 服务端关闭时会重置所有增强过的类
version——输出当前目标 Java 进程所加载的 Arthas 版本号
quit——退出当前 Arthas 客户端,其他 Arthas 客户端不受影响
shutdown——关闭 Arthas 服务端,所有 Arthas 客户端全部退出
keymap——Arthas快捷键列表及自定义快捷键
jvm相关
dashboard——当前系统的实时数据面板
thread——查看当前 JVM 的线程堆栈信息(非常有用的一个命令)
jvm——查看当前 JVM 的信息
sysprop——查看和修改JVM的系统属性
getstatic——查看类的静态属性
class/classloader相关
sc——查看JVM已加载的类信息(可以查看类是哪个jar包中加载的)
sm——查看已加载类的方法信息
dump——dump 已加载类的 byte code 到特定目录
redefine——加载外部的.class文件,redefine到JVM里
jad——反编译指定已加载类的源码
classloader——查看classloader的继承树,urls,类加载信息,使用classloader去getResource
monitor/watch/trace相关
monitor——方法执行监控
watch——方法执行数据观测
trace——方法内部调用路径,并输出方法路径上的每个节点上耗时
stack——输出当前方法被调用的调用路径
tt——方法执行数据的时空隧道,记录下指定方法每次调用的入参和返回信息,并能对这些不同的时间下调用进行观测
options
options——查看或设置Arthas全局开关
Arthas简单案例
dashboard
thread 命令
查询当前进程中最忙的3个线程,是不是很方便 thread -n 52
JVM命令
一目了然
getstatic 获取类的静态属性,支持ongl表达式
watch
方法执行数据观测 让你能方便的观察到指定方法的调用情况。能观察到的范围为:返回值、抛出异常、入参,通过编写 OGNL 表达式进行对应变量的查看。monitor
方法执行监控 对匹配 class-pattern/method-pattern的类、方法的调用进行监控。 可以非常方便的用于统计某个方法的执行时间、平均RTtrace
方法内部调用路径,并输出方法路径上的每个节点上耗时 可以看到简单的调用链,各个方法执行的时间,短小精悍,排除方法耗时好帮手,不过需要注意的是这里的耗时有点点不精确,trace执行本身也有点性能开销,这里没有减掉这个时间支持ongl,可以对方法参数长度、值进行过滤
总结下
一般来说,对于线上出现的耗时、因为参数条件本地无法满足调试、没有打点记录耗时但是又需要及时知道耗时等的问题,可以使用track,watch,monitor相对快速的进行诊断。对于JVM相关的分析和诊断,可以使用dashboard,thread,jvm命令。对于平日没留意jar包依赖冲突的应用造成的线上各种问题,可以使用sc,sm去分析,一般系统用Dependency Analyzer分析下,就能避免这类jar包冲突问题。这个工具使用还是挺简单的,有些分析命令,需要对ONGL有一定的了解才能更好的使用它,用好它。详细参数等可以直接看官方文档,我这里只是结合robert这个项目举了写列子。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- Java诊断工具Arthas
- greys在线诊断工具的主要实现
- UBCD 5.3.8 发布,诊断工具
- gops —— Go 程序诊断分析工具
- Arthas 3.4.6 发布,Java 诊断工具
- 这几款 JVM 故障诊断处理工具你还不会?
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
跨境电商——阿里巴巴速卖通宝典
速卖通大学 编著 / 电子工业出版社 / 2015-1 / 69.00元
跨境电商作为中国电子商务发展的最新趋势,受到了全社会越来越多的重视,大量中国卖家借助阿里巴巴速卖通平台,将产品直接售卖到全球的消费者手中,通过这条短得不能再短的交易链,获得了丰厚的回报。 但同时,跨境电商这一贸易形式,对卖家的综合素质要求比较高:卖家要对海外市场比较熟悉,对跨境物流有所把握,能够用外语进行产品介绍和客户交流,通过跨境结算拿到货款……诸如此类的门槛,让不少新卖家心生畏难,而所有......一起来看看 《跨境电商——阿里巴巴速卖通宝典》 这本书的介绍吧!