Arthas 线上环境问题排查

Arthas 线上环境问题排查

开源地址:https://github.com/alibaba/arthas

​ 在使用 Arthas 之前,当遇到 Java 线上问题时,如 CPU 飙升、负载突高、内存溢出等问题,你需要查命令,查网络,然后 jps、jstack、jmap、jhat、jstat、hprof 等一通操作。最终焦头烂额,还不一定能查出问题所在。而现在,大多数的常见问题你都可以使用 Arthas 轻松定位,迅速解决,及时止损,准时下班。

1.0 arthas 能帮你解决的问题

  • 这个类从哪个jar包加载的?为什么会报各种类相关的Exception
  • 我改的代码为什么没有执行到,没有部署?
  • 遇到问题无法在线上进行debug,难道只能加日志重新发布?
  • 线上遇到问题,无法debug,线下无法重现
  • 是否有一个全局的视角来查看系统的运行状况?
  • 有什么方法可以监控到JVM的实时运行状态
  • 怎么快速的定位应用的热点,生成火焰图?

2.0 快速安装

https://github.com/alibaba/arthas/blob/master/README_CN.md

3.0 常用命令

命令可以查看当前系统的实时数据面板。可以查看到CPU、内存、GC、运行环境等信息。 输入 q 或者 Ctrl+C 可以退出dashboard命令。

thread 查看当前进程的所有线程

thread ID 查看指定线程ID的线程

thread -n 3 展示当前最忙的前3个线程并打印堆栈信息

thread -b 找出当前阻塞其它线程的线程,排查死锁

thread -i 1000 -n 3 指定采样时间间隔,并展示最忙碌的3个线程

thread --state 线程状态 查看处于锁定状态的线程

jad 包名.类名 反编译 (需要类被加载到JVM中)

jad 包名.类名 包含有类加载器+位置+源码

jad 包名.类名 --source-only 只包含反编译后的源码

jad 包名.类名 方法名 反编译指定的方法

jad 包名.类名 > 存放路径名 反编译类,并存放在指定的文件下

watch 观察指定方法的调用情况

watch 包名.类名 方法名 "{params,returnObj}" -x 2,监视方法出参和返回值,-x表示指定输出结果的属性遍历深度,默认为1,params表示所有参数数组,returnObject表示返回值

watch 包名.类名 方法名 "target" -x 2观察当前对象中的所有属性,target表示当前对象

watch 包名.类名 方法名 "target.field_name" -x 2 观察当前对象中的指定属性 target.field_name指定对象中的某个属性

watch 包名.类名 方法名 "{params,target,returnObj}" -x 2 -b -s -n 2 同时观察方法调用前和方法返回后,参数-n 2表示只执行两次。params表示参数,target表示执行方法的对象,returnObj表示返回值

退出 arthas

  • quitexit 只是退出当前连接,端口会保持开放
  • stop 结束会话,完全退出 arthas
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

对你偏爱u

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值