alibaba开源的Java诊断工具-Arthas

mtain 2019年10月24日 942次浏览

简介

Arthas 是Alibaba开源的Java诊断工具

当你遇到以下类似问题而束手无策时,Arthas可以帮助你解决:

  1. 这个类从哪个 jar 包加载的?为什么会报各种类相关的 Exception?
  2. 我改的代码为什么没有执行到?难道是我没 commit?分支搞错了?
  3. 遇到问题无法在线上 debug,难道只能通过加日志再重新发布吗?
  4. 线上遇到某个用户的数据处理有问题,但线上同样无法 debug,线下无法重现!
  5. 是否有一个全局视角来查看系统的运行状况?
  6. 有什么办法可以监控到JVM的实时运行状态?

Arthas采用命令行交互模式,同时提供丰富的 Tab 自动补全功能,进一步方便进行问题的定位和诊断。

使用示例

# 使用运行Java应用的用户去启动Arthas

# 帮助
help
watch -help

# 查看cpu占用高的前3个线程
thread -n 3

# 跟踪某个方法的调用时间,显示方法调用时间,找出最慢的方法
trace 包名.类名 方法名
注: 
1. 浏览器开发控制台先超出慢的请求,然后找到Controller,监控此Controller的方法,找出慢的方法
2. 找到慢的方法后,继续使用trace跟踪内部的方法


# 查看某方法,调用时的入参和返回值
watch -b org.apache.commons.lang.StringUtils isBlank params
watch -f org.apache.commons.lang.StringUtils isBlank returnObj


# 反编译正在运行的类
jad javax.servlet.Servlet

# 查看方法的调用堆栈
stack 包名.类名 方法名

# 查找JVM中已经加载的类
sc -d org.springframework.web.context.support.XmlWebApplicationContext
 
# 了解当前系统中有多少类加载器,以及每个加载器加载的类数量,帮助您判断是否有类加载器泄露
classloader