# Arthas 简单使用说明

Posted 爱码代码的喵

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了# Arthas 简单使用说明相关的知识,希望对你有一定的参考价值。

Arthas 简单使用说明

友情链接:
# Jdk VisualVM使用、线程 dump 制作分析
# Idea 调试 Debug 技巧
Arthas官方文档

Arthas

  • ArthasAlibaba 在 2018 年 9 月开源的 Java 诊断工具。支持 JDK6+, 采用命令行交互模式,提供 Tab 自动不全,可以方便的定位和诊断线上程序运行问题。

Arthas 使用场景

  • 是否有一个全局视角来查看系统的运行状况?
  • 为什么 CPU 又升高了,到底是哪里占用了 CPU
  • 运行的多线程有死锁吗?有阻塞吗?
  • 程序运行耗时很长,是哪里耗时比较长呢?如何监测呢?
  • 这个类从哪个 jar 包加载的?为什么会报各种类相关的 Exception
  • 我改的代码为什么没有执行到?难道是我没 commit?分支搞错了?
  • 遇到问题无法在线上 debug,难道只能通过加日志再重新发布吗?
  • 有什么办法可以监控到 JVM 的实时运行状态?

安装启动

相关命令

命令介绍
dashboard当前系统的实时数据面板
thread查看当前 JVM 的线程堆栈信息
watch方法执行数据观测
trace方法内部调用路径,并输出方法路径上的每个节点上耗时
stack输出当前方法被调用的调用路径
tt方法执行数据的时空隧道,记录下指定方法每次调用的入参和返回信息,并能对这些不同的时间下调用进行观测
monitor方法执行监控
jvm查看当前 JVM 信息
vmoption查看,更新 JVM 诊断相关的参数
sc查看 JVM 已加载的类信息
sm查看已加载类的方法信息
jad反编译指定已加载类的源码
classloader查看 classloader 的继承树,urls,类加载信息
heapdump类似 jmap 命令的 heap dump 功能

常用操作

  • 使用 dashboard 命令可以概览程序的 线程、内存、GC、运行环境信息。
  • 使用 thread查看所有线程信息,同时会列出每个线程的 CPU 使用率

Thread

参数名称参数说明
id线程id
[n:]指定最忙的前N个线程并打印堆栈
[b]找出当前阻塞其他线程的线程
[i <value>]指定cpu使用率统计的采样间隔,单位为毫秒,默认值为200
[--all]显示所有匹配的线程

thread -b 找出死锁线程

  • thread --state blocked

  • thread -b

最忙的前N个线程并打印堆栈

  • thread -n 3

反编译类

  • 反编译指定已加载类的源码,查看当前环境中的代码是否是最新的代码

  • jad com.li.springbootproject.service.thread.impl.ThreadTestServiceImpl

  • 输出到目录下:jad --source-only com.li.springbootproject.service.user.impl.UserServiceImpl > J://Documents//Desktop//UserServiceImpl.java

查看类相关属性

  • 查看JVM已加载的类信息

  • sc -d -f com.li.springbootproject.service.thread.impl.ThreadTestServiceImpl

查看变量的值

  • ognl '@com.li.springbootproject.service.thread.impl.ThreadTestServiceImpl@hashSet'

  • 静态变量修改值:ognl '@com.li.springbootproject.service.thread.impl.ThreadTestServiceImpl@hashSet.add("test")'

查看方法耗时

class-pattern类名表达式匹配
method-pattern方法名表达式匹配
condition-express条件表达式
[E]开启正则表达式匹配,默认为通配符匹配
[n:]命令执行次数
#cost方法执行耗时
  • 使用 trace 命令可以跟踪统计方法耗时

  • trace com.li.springbootproject.service.test.impl.CommonServiceImpl insertDemo

方法执行监控

监控项说明
timestamp时间戳
classJava
method方法(构造方法、普通方法)
total调用次数
success成功次数
fail失败次数
rt平均RT
fail-rate失败率
  • monitor -c 5 com.li.springbootproject.controller.test.CommonController test

观察方法信息

  • 调用路径:stack com.UserServiceImpl mysql

查找对应类的 classloader

  • sc -d *ThreadTestServiceImpl | grep classLoader

Idea 安装 Arthas 插件

  • 安装这个插件可以快速复制相关命令

以上是关于# Arthas 简单使用说明的主要内容,如果未能解决你的问题,请参考以下文章

Windows下Arthas的简单使用

Windows下Arthas的简单使用

Linux下Arthas的简单使用

Linux下Arthas的简单使用

Linux下Arthas的简单使用

Alibaba Java诊断工具Arthas之快速安装和简单使用