魔兽世界之阿尔塞斯(Arthas)线上问题解决神器

简介: 前言文本已收录至我的GitHub仓库,欢迎Star:github.com/bin39232820…种一棵树最好的时间是十年前,其次是现在

前言


在使用 Arthas 之前,当遇到 Java 线上问题时,如 CPU 飙升、负载突高、内存溢出等问题,你需要查命令,查网络,然后 jps、jstack、jmap、jhat、jstat、hprof 等一通操作。最终焦头烂额,还不一定能查出问题所在。而现在,大多数的常见问题你都可以使用 Arthas 轻松定位,迅速解决,及时止损,准时下班。


介绍


Arthas 是 Alibaba 在 2018 年 9 月开源的 Java 诊断工具。支持 JDK6+, 采用命令行交互模式,提供 Tab 自动不全,可以方便的定位和诊断线上程序运行问题。 Arthas 官方文档十分详细,本文也参考了官方文档内容,同时在开源在的 Github 的项目里的 Issues 里不仅有问题反馈,更有大量的使用案例,也可以进行学习参考。


案例


其实这些东西都是阿里提供的具体在线案例。我呢,也就是搬运一下,给大家科普科普,不过这东西确实好用,比如我们线上有问题了,当时写代码的时候没打日志,就不知道运行过程中,当前线程的当前方法的trace,但是Arthas都能帮我们解决,负责我们就得加个日志再重启这样就太麻烦了

根据在线文档,给大家介绍几个实用的命令哦。


下载及安装


wget https://alibaba.github.io/arthas/arthas-boot.jar
java -jar arthas-boot.jar --target-ip 0.0.0.0
复制代码

arthas-boot是Arthas的启动程序,它启动后,会列出所有的Java进程,用户可以选择需要诊断的目标进程。

特别说明:(重点):arthas不可以直接远程连接,启动arthas时输入的ip和端口都是本机暴露给外界的ip和端口 target-ip: 如果要在其他机器使用Web Console,请填写本机的ip(如:192.168.33.44),此时可以访问:http://ip:8563



红线的地方就是能Arthas能够监听到的我们的Java程序

然后我们选择 1


这个就是进入监控的交互界面了。


常用命令



命令 作用
dashboard 当前系统的实时数据面板
thread 查看当前 JVM 的线程堆栈信息
watch 方法执行数据观测
trace 方法内部调用路径,并输出方法路径上的每个节点上耗时
stack 输出当前方法被调用的调用路径
tt 方法执行数据的时空隧道,记录下指定方法每次调用的入参和返回信息,并能对这些不同的时间下调用进行观测
monitor 方法执行监控
jvm 查看当前 JVM 信息
vmoption 查看,更新 JVM 诊断相关的参数
sc 查看 JVM 已加载的类信息
sm 查看已加载类的方法信息
jad 反编译指定已加载类的源码
classloader 查看 classloader 的继承树,urls,类加载信息
heapdump 类似 jmap 命令的 heap dump 功能


全局监控  Dashboard


这些参数啥都有,很是不错,但是这种监控当然也不是啥新鲜功能,毕竟Java自带的工具也不少,不过锦上添花。


CPU 为什么起飞了 thread

用它排查cpu 问题,不是爽的一批嘛

使用 thread查看所有线程信息,同时会列出每个线程的 CPU 使用率。


使用命令 thread 12 查看 CPU 消耗较高的 12 号线程信息,可以看到 CPU 使用较高的方法和行数(这里的行数可能和上面代码里的行数有区别,因为上面的代码在我写文章时候重新排过版了)。


上面是先通过观察总体的线程信息,然后查看具体的线程运行情况。如果只是为了寻找 CPU 使用较高的线程,可以直接使用命令 thread -n [显示的线程个数] ,就可以排列出 CPU 使用率 Top N 的线程。


结尾


哈哈 具体很多东西,我觉得大家跟着文档走,还有在线例子,不过在线例子很烦的一点就是经常的断开,气死我了,大家走几遍,写几个demo,什么线程问题,就跟测试线打断点一样,都一样了的,还有啥难的是不。

相关文章
|
Arthas 测试技术
【面试题精讲】JVM-使用Arthas解决线上问题(热部署)
【面试题精讲】JVM-使用Arthas解决线上问题(热部署)
|
Arthas 监控 NoSQL
Arthas - Java 线上问题定位处理的终极利器
Arthas - Java 线上问题定位处理的终极利器
827 0
Arthas - Java 线上问题定位处理的终极利器
|
6月前
|
Arthas 监控 Java
Java 诊断利器 Arthas使用
Java 诊断利器 Arthas使用
213 0
|
6月前
|
Arthas 监控 Java
Arthas 可以用于监控和诊断在 Windows 系统下部署的 Tomcat 服务
Arthas 可以用于监控和诊断在 Windows 系统下部署的 Tomcat 服务
836 2
|
Arthas 监控 Java
开源Java诊断工具Arthas:开篇之watch实战
还在为排查Java程序线上问题头痛吗,看我们用阿里开源的诊断神器 Arthas 来帮您
538 1
|
Arthas Dubbo Java
Alibaba Java诊断工具Arthas查看Dubbo动态代理类
Alibaba Java诊断工具Arthas查看Dubbo动态代理类
111 0
|
5月前
|
Arthas 测试技术 Java
一文带你快速了解 Java 线上问题快速诊断神器 Arthas
【6月更文挑战第1天】一文带你快速了解 Java 线上问题快速诊断神器 Arthas
285 3
|
6月前
|
Arthas Java 测试技术
Java诊断利器Arthas安装和使用
Java诊断利器Arthas安装和使用
75 0
|
Arthas 监控 Java
【Java虚拟机】JVM诊断神器Arthas入门实操
【Java虚拟机】JVM诊断神器Arthas入门实操
【Java虚拟机】JVM诊断神器Arthas入门实操
|
Arthas 监控 IDE
Arthas(Java 应用诊断利器)
Arthas(Java 应用诊断利器)
Arthas(Java 应用诊断利器)