简介
-
Arthas
是Alibaba开源的Java诊断工具,深受开发者喜爱。 - 官网地址:https://arthas.aliyun.com/
- 它可以做什么,以下功能都是直接操作线上跑着的jar包!!!
- 反编译,查看线上某个程序的某个类的代码
- 查看 某类的某方法调用入参和异常
- 查看程序所有的线程、CPU消耗top n 的线程、阻塞的线程
暂时就举这几个例子吧
实战
- 下载
ubuntu系统,shell连接到服务器,执行:
wget https://arthas.aliyun.com/arthas-boot.jar
- 运行
java -jar arthas-boot.jar
arthas-boot
是Arthas
的启动程序,它启动后,会列出所有的Java进程,用户可以选择需要诊断的目标进程
红色部分翻译下来是:发现服务器存在的Java进程如下,请选择一个并输入编号,例如输入 1 ,然后敲回车,我这里选择的是 3 ,即运行在 16474 的 guanyu-server-minapp-1.0.0-SNAPSHOT-3d76140.jar
- 操作
- 反编译
# jad 类名(带路径) jad com.muiyou.api.InvoiceApi
- 查看某类某方法调用入参和异常
# watch +类名 +方法名 + '{params,throwExp}' -x 2 # 方法名可以用 * 代指所有方法 watch com.muiyou.web.AreaController save '{params,throwExp}' -x 2
此时再访问该方法,就会打印入参,如果报错还会打印异常
- 查看线程相关
#查看所有线程 thread #查看 CPU top n 的线程 thread -n 数字 #查看5秒内 CPU top 3 的线程 thread -n 3 -i 5000 #查看阻塞线程 thread -b
- 退出 arthas
#退出 exit 或者 quit #彻底退出 stop
好了,就说这么多,有兴趣的可以访问官网自己探索别的功能~
比如 热更新代码~