侧边栏壁纸
博主头像
GG's Blog博主等级

行动起来,活在当下

  • 累计撰写 23 篇文章
  • 累计创建 12 个标签
  • 累计收到 1 条评论

目 录CONTENT

文章目录

arthas线上问题排查常用命令

mrqinzh
2024-06-10 / 0 评论 / 0 点赞 / 27 阅读 / 4006 字

1.dashboard

1.1 简介

dashboard是一个仪表盘主要是显示一些当前服务常用的资源信息

1.2 使用场景

查看系统中JVM 线程,堆内存,系统信息 等信息。定位线上性能问题

1.3 常用命令

#每2s刷新一次 一共刷新两次
dashboard -i 2000 -n 2

2.jad

2.1 简介

查看虚拟机类文件信息,主要用来排查我们的代码是否在环境上面编译过

2.2 使用场景

当我们修改了对应的代码,需要确认是否已经发布到应用上面了,可以通过该命令反编译查看源码是否更新 上去

2.3 常用命令


#反编译只显示源码信息
jad --source-only demo.MathGame
#反编译只显示源码且不显示行号
jad --source-only com.qiyuesuo.controller.QysController --lineNumber false

3.retransform

3.1 简介

在不重启服务的情况下,加载编译后java class文件到JVM中

3.2 使用场景

在发现一些线上代码缺陷,本地修改完代码需要在不停机发布到线上服务器的时候,可以使用改命令修改后 的class 热部署到线上服务器上面

3.3 常用命令

#查看重编译的记录
retransform -l
#根据索引删除重编译的记录
retransform -d 1
#删除所有重编译的记录
retransform --deleteAll
#根据class文件重新编译代码到虚拟机
retransform /tmp/Test.class

4.trace

4.1 简介

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

4.2 使用场景

在线上排查一些性能问题的时候,比如排查一个接口到底是哪个地方响应比较慢的时候,我们可以使用trace命令查询方法调用的链路,以及调用每个方法的耗时,根据耗时时间一层一层的跟踪进而定位到响应缓慢的问题

4.3 常用命令

#查看某个类某个方法调用节点的耗时 查看MathGame类 run方法 的运行情况共执行1次
trace demo.MathGame run -n 1

5.watch

5.1 简介

查看函数执行的相关数据

5.2 使用场景

在线上定位问题的时候,我们想知道方法的入参和出参的值是什么的时候,或者想知道当函数发生异常的时候方法的出参入参是什么的时候可以使用该命令观察方法的出参和入参

5.3 常用命令


#观察MathGame类的primeFactors方法的入参,出参,以及当前对象相关信息,并且打印对象的属性深度为2
watch demo.MathGame primeFactors -x 2
#观察MathGame类的primeFactors方法的入参,出参并且打印对象的属性深度为2
watch demo.MathGame primeFactors '{params, returnObj}' -x 2
#观察耗时大于200ms MathGame类的primeFactors方法的入参,出参并且打印对象的属性深度为2
watch demo.MathGame primeFactors '{params, returnObj}' '#cost>200' -x 2

0

评论区