线上 Java 应用排查故障时,常常会遇到一些棘手场景:接口响应超时,但日志里翻不出有效报错;CPU 负载飙升,线程堆栈信息却繁杂凌乱。更麻烦的是,进程还在正常对外服务,既不能随便重启,现场线索又转瞬即逝。这种时候,轻量级的在线诊断工具就派上用场了,阿里开源的 Arthas 4.0 正是为线上紧急排障而生。

它可以动态挂载运行中的 Java 进程,无需停机、不用改代码、也不用重启服务,通过几条极简命令就能全方位剖析线程、方法、内存与运行状态。全新升级的 V4 版本,不仅适配了新版 JDK,还接入了 AI 诊断能力,线上排障效率大幅提升。
一、Arthas 核心定位:Java 线上听诊器
Arthas 是阿里开源的零侵入 Java 诊断工具,跨平台兼容 Linux、macOS、Windows 系统,全程依托命令行操作,支持 Tab 快捷补全,上手门槛很低。

它最大的优势是无需提前预埋监控点位,也不用修改业务代码与 JVM 参数。线上程序出现异常时,直接挂载目标进程,就能实时排查各类运行问题。
日常运维中最关心的几个核心疑问,它都能快速给出答案:当前哪些线程在抢占 CPU 资源?接口方法的耗时瓶颈卡在哪?线上实际加载的类文件是否与预期一致?
高频核心诊断命令覆盖了绝大多数排障场景:
- dashboard:全局 JVM 监控面板,一键查看线程、内存、GC 整体状态
- thread:精准抓取线程栈,定位高负载、阻塞线程
- trace/watch:追踪方法调用链路、耗时、入参与异常信息
- jad/sc:反编译线上运行类,核对真实代码逻辑
- profiler:性能采样,自动生成可视化火焰图,锁定性能热点
工具部署极其轻量,一条命令即可快速启动挂载:
curl -O https://arthas.aliyun.com/arthas-boot.jar
java -jar arthas-boot.jar
执行命令后,系统会罗列本机所有 Java 进程,输入对应编号即可完成挂载,Windows 系统同样适配该启动方式。
二、标准化线上排障思路:从全局到细节
新手用 Arthas 容易无从下手,其实排障有一套固定的标准化流程,完全不必盲目试错。整体逻辑遵循先全局观测、再链路追踪、最后定点采样的原则。
先用仪表盘摸清 JVM 整体运行状态,锁定异常模块;再深入方法调用链路,定位耗时瓶颈;最后通过性能采样固定热点问题,精准落地故障根源。下面这张流程图直观概括了从「接口变慢或 CPU 升高」到「回到具体类和方法」的完整排查路径:先判断现象更像 CPU 高还是接口 RT 高,再分别用 thread -n 3、profiler 或 trace、watch 走对应分支,最终都会汇聚到具体类和方法上。后文的实战案例也都遵循这个标准流程。

三、Arthas 4 核心升级亮点
相较于旧版本,4.x 系列完成了两大核心升级:适配新版 JDK 生态、开放 AI 诊断能力,同时优化了大量细节体验,稳定性和实用性全面增强。
1、全版本 JDK 兼容,适配新版运行环境
Arthas 4 最低支持 JDK 8,最高兼容至 JDK 25,完整覆盖企业主流迭代版本。针对 JDK 17、21、25 等新版长期支持版本做了深度适配,能跟上业务运行环境升级的节奏。同时全面升级 Jackson、Fastjson2、Netty 等核心依赖,修复了潜在安全漏洞,工具自身运行也更稳定。
2、火焰图能力全面强化,排查隐性卡顿
内置 async-profiler 升级至 4.4 版本,采样精度大幅提升。除常规 CPU 性能采样外,新增墙钟时间(wall)采样模式,专门应对 CPU 负载正常但接口依然响应卡顿、线程锁等待、网络阻塞等隐性问题,精准定位各类疑难慢请求场景。
同时优化了会话时效,默认超时时间从 30 分钟延长至 3 小时,长时间采样排查不会被自动断线,对复杂故障的持续追踪更友好。
3、精准分析元空间溢出问题
新增专属命令 classloader-metaspace,依托 JFR 数据,按类加载器维度统计类加载数量、元空间块占用情况。专门适配动态代理、脚本引擎、动态生成类导致的 Metaspace 持续上涨、内存溢出场景,精准定位异常类加载器,解决了旧版本难以排查的元空间泄漏问题。
4、接入 AI 诊断,低门槛运维排障
4.x 新增实验性 MCP 服务模块,默认开放 8563 端口接口服务。外部 AI 客户端可通过接口调用 Arthas 的 29 项核心诊断能力。运维人员可以用自然语言下发指令,让 AI 自动完成进程诊断、链路追踪、性能采样等操作。同时支持密码鉴权配置,保障线上服务安全,还适配了龙芯 loongarch64 架构,国产化场景覆盖更全面。
四、三套零门槛实战案例,直接落地复用
以下案例基于业务登录接口 demo.UserService.login 演示,实际使用时替换成自有业务类即可快速复用。
案例一:CPU 告警快速定位繁忙线程
收到 CPU 负载告警时,先快照全局状态,再锁定 TOP 繁忙线程。
dashboard -n 1
thread -n 3
dashboard 单次快照,快速留存 JVM 全局状态;thread 命令筛选出CPU占用最高的3条线程。根据线程堆栈定位卡死的业务方法,就能精准锁定异常代码位置。
案例二:接口慢请求精准追踪耗时链路
日志无法区分接口卡顿分支时,用 trace 追踪耗时,用 watch 观测真实请求参数与异常。
trace demo.UserService login
watch demo.UserService login '{params,returnObj,throwExp}' -x 2 -n 5
trace 可以拆解方法内部各级调用耗时,区分卡顿到底出在参数校验、业务逻辑还是远程调用上;watch 展开两层参数对象,只抓取 5 次样本,避免刷屏。
高并发场景下还能精准过滤慢请求,只统计耗时超过阈值的调用:
trace demo.UserService login '#cost > 100'
案例三:火焰图采样 + 元空间泄漏排查
热点代码分散、难以定位瓶颈时,启动性能采样生成 HTML 火焰图,直观分析性能问题。
profiler start --event cpu
profiler status
profiler stop --format html
针对没有 CPU 压力但接口卡顿的场景,切换墙钟采样模式,排查锁等待、网络阻塞等问题。
元空间持续上涨时,执行以下命令,按占用大小排序类加载器,定位动态类泛滥的源头:
classloader-metaspace --duration 2500ms --limit 10
五、AI 自动化诊断配置方式
想要启用 AI 辅助排障,可以在 arthas.properties 中开启 MCP 服务,配置端口与加密密码:
arthas.mcpEndpoint=/mcp
arthas.httpPort=8563
arthas.password=your-secure-password
外部客户端通过 Bearer Token 鉴权接入,就能用自然语言驱动工具自动执行各类诊断命令。该功能目前处于实验阶段,建议先在测试环境调试熟悉后,再考虑生产环境上线。
总结
Arthas 4 凭借新版 JDK 全适配、强化火焰图分析、元空间精准排查、AI 辅助诊断四大升级,解决了线上 Java 应用疑难排障的诸多痛点。全程零侵入、无需停机、操作轻量化,标准化排障流程简单易上手。无论是日常运维、故障复盘还是性能优化,它都是 Java 开发者值得常备的实战工具。
开源地址:https://github.com/alibaba/arthas