目录
基本概述
jconsole等工具都必须在服务端项目进程中配置相关的监控参数,然后工具通过远程连接到项目进程,获取相关的数据。这样就会带来一些不便,比如线上环境的网络是隔离的,本地的监控工具根本连不上线上环境。并且类似于Jprofiler这样的商业工具,是需要付费的。
那么有没有一款工具不需要远程连接,也不需要配置监控参数,同时也提供了丰富的性能监控数据呢?
阿里巴巴开源的性能分析神器Arthas应运而生。
Arthas是Alibaba开源的Java诊断工具,深受开发者喜爱。在线排查问题,无需重启;动态跟踪Java代码;实时监控JVM状态。Arthas 支持JDK 6+,支持Linux/Mac/Windows,采用命令行交互模式,同时提供丰富的 Tab 自动补全功能,进一步方便进行问题的定位和诊断。当你遇到以下类似问题而束手无策时,Arthas可以帮助你解决:
安装方式
如果速度较慢,可以尝试国内的码云Gitee下载。
wget https://io/arthas/arthas-boot.jar
wget https://arthas/gitee/io/arthas-boot.jar
Arthas只是一个java程序,所以可以直接用java -jar运行。
除了在命令行查看外,Arthas目前还支持 Web Console。在成功启动连接进程之后就已经自动启动,可以直接访问 http://127.0.0.1:8563/ 访问,页面上的操作模式和控制台完全一样。
基础指令
退出当前 Arthas客户端,其他 Arthas客户端不受影响:
quit/exit
关闭 Arthas服务端,所有 Arthas客户端全部退出:
stop/shutdown
查看命令帮助信息 :
help
打印文件内容,和linux里的cat命令类似:
cat
打印参数,和linux里的echo命令类似:
echo
匹配查找,和linux里的gep命令类似:
grep
复制标隹输入到标准输出和指定的文件,和linux里的tee命令类似 :
tee
返回当前的工作目录,和linux命令类似 :
pwd
清空当前屏幕区域 :
cls
查看当前会话的信息 :
session
重置增强类,将被 Arthas增强过的类全部还原, Arthas服务端关闭时会重置所有增强过的类:
reset
输出当前目标Java进程所加载的 Arthas版本号:
version
打印命令历史:
history
Arthas快捷键列表及自定义快捷键:
keymap
jvm相关指令
当前系统的实时数据面板:
dashboard
查看当前JVM的线程堆栈信息:
thread
查看当前JVM的信息:
jvm
查看和修改JVM的系统属性:
sysprop
查看JVM的环境变量:
sysem
查看和修改JVM里诊断相关的option:
vmoption
查看当前JVM的 Perf Counter信息:
perfcounter
查看和修改logger :
logger
查看类的静态属性:
getstatic
执行ognl表达式:
ognl
查看 Mbean的信息:
mbean
类似jmap命令的 heap dump功能:
heapdump dump java heap
class/classloader相关指令
反编译指定已加载类的源码
jad
内存编译器,内存编译.java文件为.class文件
mc
加载外部的.class文件, retransform到JVM里
retransform
加载外部的.class文件,redefine到JVM里
redefine
dump已加载类的byte code到特定目录
dump
monitor/watch/trace相关指令
输出当前方法被调用的调用路径
stack
方法执行数据的时空隧道,记录下指定方法每次调用的入参和返回信息,并能对这些不同的时间下调用进行观测
tt
其他
列出所有job
jobs
强制终止任务
kill
将暂停的任务拉到前台执行
fg
将暂停的任务放到后台执行
bg
搜索满足条件的结果
grep
将命令的结果去除ANSI颜色
plaintext
按行统计输出结果
wc
查看或设置Arthas全局开关
options
使用async-profiler对应用采样,生成火焰图
profiler