引用
线上环境出现异常时,我们想立马查看下JVM内存使用情况,想看下我们的应用中的线程状态等等。那么阿里巴巴的在线诊断神器Arthas
工具就是非常不错的选择,本文主要介绍Arthas
的基本用法。
Arthas
工具介绍Arthas
安装- 常用命令
一、Arthas
工具介绍
1、Arthas是什么
Arthas 是阿里巴巴开源的,基于 Greys 进行二次开发的Java应用在线诊断工具,利用Java6的Instrumentation特性,动态增强你所指定的类,获取你想要到的信息, 采用命令行交互模式,同时提供丰富的 Tab 自动补全功能,让我们在定位、分析诊断问题时如有神助。
2、Arthas能帮我们解决什么问题
- 这个类从哪个
jar
包加载的?为什么会报各种类相关的Exception
? - 我改的代码为什么没有执行到?难道是我没
commit
?分支搞错了? - 遇到问题无法在线上
debug
,难道只能通过加日志再重新发布吗? - 线上遇到某个用户的数据处理有问题,但线上同样无法
debug
,线下无法重现!
- 是否有一个全局视角来查看系统的运行状况?
- 有什么办法可以监控到
JVM
的实时运行状态?
二、Arthas
安装
1、下载
Arthas下载:http://repository.sonatype.org/service/local/artifact/maven/redirect?r=central-proxy&g=com.taobao.arthas&a=arthas-packaging&e=zip&c=bin&v=LATEST
下载后解压如下图所示:
2、启动
通过java -jar arthas-boot.jar启动我们的神器Arthas,启动后会展示系统中的Java应用以及其对应的PID信息,如下所示:
我们想要查看PID为14405的进程信息,则输入前面的序号1,如下所示:
输入thread,查看对应线程的详细信息。
三、常用命令
1、基础命令
help——查看命令帮助信息
cat——打印文件内容,和linux里的cat命令类似
pwd——返回当前的工作目录,和linux命令类似
cls——清空当前屏幕区域
session——查看当前会话的信息
reset——重置增强类,将被 Arthas 增强过的类全部还原,Arthas 服务端关闭时会重置所有增强过的类
version——输出当前目标 Java 进程所加载的 Arthas 版本号
history——打印命令历史
quit——退出当前 Arthas 客户端,其他 Arthas 客户端不受影响
shutdown——关闭 Arthas 服务端,所有 Arthas 客户端全部退出
keymap——Arthas快捷键列表及自定义快捷键
2、jvm相关
dashboard——当前系统的实时数据面板
thread——查看当前 JVM 的线程堆栈信息
jvm——查看当前 JVM 的信息
sysprop——查看和修改JVM的系统属性
sysenv——查看JVM的环境变量
getstatic——查看类的静态属性
New! ognl——执行ognl表达式
New! mbean——查看 Mbean 的信息
3、options
options——查看或设置Arthas全局开关
4、管道
Arthas支持使用管道对上述命令的结果进行进一步的处理,如sm java.lang.String * | grep ‘index’
grep——搜索满足条件的结果
plaintext——将命令的结果去除ANSI颜色
wc——按行统计输出结果