桃之夭夭,灼灼其华

arthas使用

Word count: 468Reading time: 1 min
2020/07/05 Share

是Alibaba开源的Java诊断工具
github地址:https://github.com/alibaba/arthas
中文档地址:https://arthas.gitee.io/

Arthas可以帮你解决什么问题

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

安装

快速安装
  • 下载
    1
    curl -O https://alibaba.github.io/arthas/arthas-boot.jar
  • 启动并下载组件
    1
    java -jar arthas-boot.jar
  • 查看帮助信息
    1
    java -jar arthas-boot.jar -h
    baada0c34bbc42542deb9ee2a5e4d2b9.png

常用命令

  • dashboard 当前应用的实时数据信息,比如线程,内存,gc等必要信息
    109976f972a18c89b520950d2b3ecd24.png

  • thread 查看指定线程或者所有线程

    1
    2
    3
    4
    5
    thread [pid]

    -n 指定次数

    -b 找出阻塞的线程

    cd8714e87bb9124f6a505b978980f2ff.png

  • watch 方法执行数据观察,可以达到debug的效果

    1
    watch [classpath] [methodname] "{params,returnObj,target}" "#cost>200" -x 2
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    “#cost>200” ognl表达式,表示方法执行时间大于200毫秒

    ”{params,returnObj,target}“
    params 参数
    returnObj 返回值
    target 当前类对象

    -x 显示深度

    -b 方法执行前

    -e 方法异常后

    -s 方法返回后

    -f 在方法结束之后(正常返回和异常返回)(默认)

    -b 查看次数

    5a37fe2ebe1b8787e6173817fb3b5913.png

  • trace 方法内部调用路径,并输出方法路径上的每个节点上耗时

    1
    trace [classpath] [methodname]

    1cfae39ed079e532a159c9b5d9f49949.png

  • stack 输出当前方法被调用的调用路径

    1
    stack [classpath] [methodname]

    6bbb29ab3cfc03cc29e6ce47005d028d.png

  • logger 查看logger信息,更新logger level

  • quit 退出

CATALOG
  1. 1. Arthas可以帮你解决什么问题
  2. 2. 安装
    1. 2.1. 快速安装
  3. 3. 常用命令