Arthas 线上排查 Java 问题实录

AI-摘要
踱鸽 GPT
AI初始化中...
介绍自己 🙈
生成本文简介 👋
推荐相关文章 📖
前往主页 🏠
前往爱发电购买
Arthas 线上排查 Java 问题实录
踱鸽&水晶蟹Arthas 线上排查 Java 问题实录
Arthas 是阿里开源的 Java 诊断工具,核心能力是 attach 到运行中的 JVM 进程,不停机、不改代码,直接查线程状态、监听方法入参/返回值、分析调用链耗时。
安装与启动
|
四个核心命令
dashboard — 整体概览,快速定位问题线程
|
进入 Arthas 后第一步通常先跑 dashboard,能看到所有线程状态、堆内存使用、GC 频率。CPU 飙高时,这里能直接看到哪个线程在占 CPU。
thread — 查看线程状态,找出 CPU 占用最高的线程
|
CPU 飙高时用 thread -n 3,栈帧如果一直重复相同几行,基本就是死循环(常见于 JDK7 HashMap 并发问题)。
watch — 监听方法的入参和返回值(最常用)
|
-x 控制展开深度,params 是入参数组,returnObj 是返回值,throwExp 是异常对象。
输出示例:
|
trace — 方法调用链路耗时分析
|
输出示例(慢在哪一步,一目了然):
|
注意事项
watch对性能有一定影响,生产排查完记得stop或exit退出,不要长时间挂着高频方法ognl命令可以执行任意表达式(包括调用方法、修改变量),生产环境谨慎使用- attach 进程后如无操作,默认 30 分钟自动退出
适用场景对比
| 场景 | 推荐方式 |
|---|---|
| 问题可复现、非紧急 | 加日志,重新部署 |
| 生产偶发问题,无法重启 | watch 监听入参/返回值 |
| 接口响应慢,不知道慢在哪 | trace 分析调用链耗时 |
| CPU 飙高 | dashboard + thread -n 3 |
| 线程死锁 | thread -b |
| 想改变量值验证假设 | ognl(仅测试环境) |
评论
匿名评论隐私政策
