Arthas 4 宣布正式拥抱 AI

大家好,我是Java1234_小锋老师。

Arthas 4 宣布正式拥抱 AI

Arthas 是阿里巴巴开源的 Java 诊断工具。进程继续跑着,你就能看线程、看内存、反编译正在执行的类,还能顺着一次慢调用往下追。到了 4.x,它把这套能力接到了 AI 上:你用大白话描述现象,AI 去调用诊断命令,再把结果讲清楚。

这篇文章先把 Arthas 是什么说明白,再看 Arthas 4 的 AI 入口怎么配、一次提问会经过谁,以及一个慢接口可以怎么问。

Arthas 是做什么的

线上 Java 出了问题,日志不一定打到点上,重启一次又怕把现场弄没。Arthas 就是为这种时刻准备的。把它挂到正在运行的 JVM 上,常用的几件事马上就能做:

  • 看整体面板和内存
  • 找出最忙、堵住的线程
  • 追踪某个方法内部每一层花了多久
  • 观察入参、返回值和异常
  • 把 JVM 里真正在跑的类反编译出来

会用的人,脑子里大概有这么几句:

bash 复制代码
dashboard
thread -n 3
trace com.example.order.OrderService createOrder
watch com.example.order.OrderService createOrder '{params,returnObj,throwExp}' -x 2
jad com.example.order.OrderService

这些命令很顺手,前提是你知道眼下该先敲哪一句。刚接触的人经常卡在这里:现象很清楚,命令名一时对不上。

Arthas 4 从 4.0 起面向 JDK 8 及以上,JDK 17、21 这些版本也能直接挂。版本线往前走的同时,诊断的入口也变了。

Arthas 4 怎么接上 AI

4.x 里,AI 这条路的名字叫 Arthas MCP Server。

MCP(Model Context Protocol)是一套让 AI 助手调用外部工具的协议,最早由 Anthropic 提出。Arthas 在自己的 HTTP 服务上实现了服务端,AI 客户端连上来之后,就可以像调用函数一样执行诊断命令。官方文档目前把它标为实验模块,协议版本是 2025-06-18,传输方式是 Streamable HTTP。文档里列出了 29 个诊断工具,Claude Desktop、Cherry Studio、Cline 都可以配。

可以把它想成:Arthas 还是原来那个 Arthas,只是多开了一扇给 AI 走的门。门后面跑的,仍然是 dashboard、thread、trace、watch 这些熟悉的能力。

这扇门默认关着。要在 arthas.properties 里写上访问路径,服务才会在 HTTP 端口 8563 的 /mcp 上对外提供。

一次提问是怎么走到 JVM 里的

你在对话框里说「这个接口偶发很慢」,中间其实隔着好几步。AI 先判断该看线程还是该做 trace,再通过 MCP 把工具调用发到 Arthas,Arthas 在目标进程里执行,结果回到 AI,由它整理成一段人话。
#mermaid-svg-JkRRIAOvn34SH12C{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-JkRRIAOvn34SH12C .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-JkRRIAOvn34SH12C .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-JkRRIAOvn34SH12C .error-icon{fill:#552222;}#mermaid-svg-JkRRIAOvn34SH12C .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-JkRRIAOvn34SH12C .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-JkRRIAOvn34SH12C .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-JkRRIAOvn34SH12C .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-JkRRIAOvn34SH12C .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-JkRRIAOvn34SH12C .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-JkRRIAOvn34SH12C .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-JkRRIAOvn34SH12C .marker{fill:#333333;stroke:#333333;}#mermaid-svg-JkRRIAOvn34SH12C .marker.cross{stroke:#333333;}#mermaid-svg-JkRRIAOvn34SH12C svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-JkRRIAOvn34SH12C p{margin:0;}#mermaid-svg-JkRRIAOvn34SH12C .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-JkRRIAOvn34SH12C .cluster-label text{fill:#333;}#mermaid-svg-JkRRIAOvn34SH12C .cluster-label span{color:#333;}#mermaid-svg-JkRRIAOvn34SH12C .cluster-label span p{background-color:transparent;}#mermaid-svg-JkRRIAOvn34SH12C .label text,#mermaid-svg-JkRRIAOvn34SH12C span{fill:#333;color:#333;}#mermaid-svg-JkRRIAOvn34SH12C .node rect,#mermaid-svg-JkRRIAOvn34SH12C .node circle,#mermaid-svg-JkRRIAOvn34SH12C .node ellipse,#mermaid-svg-JkRRIAOvn34SH12C .node polygon,#mermaid-svg-JkRRIAOvn34SH12C .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-JkRRIAOvn34SH12C .rough-node .label text,#mermaid-svg-JkRRIAOvn34SH12C .node .label text,#mermaid-svg-JkRRIAOvn34SH12C .image-shape .label,#mermaid-svg-JkRRIAOvn34SH12C .icon-shape .label{text-anchor:middle;}#mermaid-svg-JkRRIAOvn34SH12C .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-JkRRIAOvn34SH12C .rough-node .label,#mermaid-svg-JkRRIAOvn34SH12C .node .label,#mermaid-svg-JkRRIAOvn34SH12C .image-shape .label,#mermaid-svg-JkRRIAOvn34SH12C .icon-shape .label{text-align:center;}#mermaid-svg-JkRRIAOvn34SH12C .node.clickable{cursor:pointer;}#mermaid-svg-JkRRIAOvn34SH12C .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-JkRRIAOvn34SH12C .arrowheadPath{fill:#333333;}#mermaid-svg-JkRRIAOvn34SH12C .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-JkRRIAOvn34SH12C .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-JkRRIAOvn34SH12C .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-JkRRIAOvn34SH12C .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-JkRRIAOvn34SH12C .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-JkRRIAOvn34SH12C .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-JkRRIAOvn34SH12C .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-JkRRIAOvn34SH12C .cluster text{fill:#333;}#mermaid-svg-JkRRIAOvn34SH12C .cluster span{color:#333;}#mermaid-svg-JkRRIAOvn34SH12C div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-JkRRIAOvn34SH12C .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-JkRRIAOvn34SH12C rect.text{fill:none;stroke-width:0;}#mermaid-svg-JkRRIAOvn34SH12C .icon-shape,#mermaid-svg-JkRRIAOvn34SH12C .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-JkRRIAOvn34SH12C .icon-shape p,#mermaid-svg-JkRRIAOvn34SH12C .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-JkRRIAOvn34SH12C .icon-shape .label rect,#mermaid-svg-JkRRIAOvn34SH12C .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-JkRRIAOvn34SH12C .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-JkRRIAOvn34SH12C .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-JkRRIAOvn34SH12C :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 你用大白话描述现象
AI 判断该看什么
通过 MCP 调用 Arthas 工具
Arthas 在目标 JVM 上执行
返回线程、耗时或源码
整理成可以直接看的结论

这一来一回经常不止一次。AI 可能先看最忙的线程,发现某个方法可疑,再去 trace,最后才给你结论。参数可以让它来拼,执行前仍建议扫一眼它准备调用的工具。有些命令会改 JVM 里的状态,值得你自己点头。

把 MCP 打开

在 arthas.properties 里加上:

properties 复制代码
# 打开 MCP,访问路径为 /mcp
arthas.mcpEndpoint=/mcp
# HTTP 端口,默认就是 8563
arthas.httpPort=8563

Arthas 起来之后,先探一下服务在不在:

bash 复制代码
curl http://localhost:8563/mcp

返回里能看到 MCP 的协议信息,就说明已经通了。

Cherry Studio 或 Cline 的配置可以写成:

json 复制代码
{
  "mcpServers": {
    "arthas-mcp": {
      "type": "streamableHttp",
      "url": "http://localhost:8563/mcp"
    }
  }
}

如果配置文件里写了 arthas.password,MCP 会自动要求认证。客户端里的 Bearer Token 必须和这个密码完全一致:

properties 复制代码
arthas.password=your-secure-password
json 复制代码
{
  "mcpServers": {
    "arthas-mcp": {
      "type": "streamableHttp",
      "url": "http://localhost:8563/mcp",
      "headers": {
        "Authorization": "Bearer your-secure-password"
      }
    }
  }
}

传输模式有两种,写在同一份配置里:

properties 复制代码
arthas.mcpEndpoint=/mcp
# STREAMABLE:保持会话,适合 watch、trace、monitor
# STATELESS:每次请求互相独立,适合查一次内存、看一次 JVM 信息
arthas.mcpProtocol=STREAMABLE

默认是 STREAMABLE。要盯着一次调用慢慢看,用它更合适。只是问一句「现在堆内存怎么样」,换成 STATELESS 也够。

一个慢接口可以这样问

订单创建偶发超过两秒。自己敲的话,往往会是这样一套:

bash 复制代码
thread -n 5
trace com.example.order.OrderService createOrder '#cost > 500' -n 20
stack com.example.order.OrderService createOrder -n 5

接上 MCP 之后,可以直接对 AI 说:

订单服务的 createOrder 偶发超过 2 秒。请先看最忙的 5 个线程,再对 com.example.order.OrderService 的 createOrder 做 trace,只保留耗时超过 500 毫秒的调用,最多 20 次。如果某一层特别突出,再补一次 stack。最后用白话告诉我,时间主要耗在哪一层。

它多半会按这个顺序碰到工具:thread,然后 trace,必要时再加 stack。你想确认线上跑的类和仓库里是不是同一份,就补一句「把 OrderService 反编译出来」,对应的是 jad。

想看 CPU 热点时,也可以说人话:

对当前 Java 进程做一次 CPU 采样,告诉我最热的几个方法,采样时间别太长。

背后是 profiler。采样本身有开销,机器已经很忙的时候,把时长说短一点。

29 个工具,记分类就够了

名字不用逐个背。按官方文档的分法,大致是四组:

分类 个数 你大概会用到
JVM 13 dashboard、memory、thread、jvm、heapdump
类 / ClassLoader 8 sc、sm、jad、classloader、redefine
监控诊断 6 monitor、stack、trace、tt、watch、profiler
辅助 2 viewfile、options

viewfile 只能读白名单里的文件,避免 AI 把机器上的任意路径都打开。默认包含当前工作目录下的 arthas-output,以及用户目录下的 ~/logs/。要多放行几个目录,用环境变量:

bash 复制代码
export ARTHAS_MCP_VIEWFILE_ALLOWED_DIRS=/path/to/dir1,/path/to/dir2

Windows 上把 export 换成设置环境变量即可,值同样是逗号分隔的目录。

用之前先看这几条

官方把 MCP Server 标成实验能力,适合先在测试环境把链路走通。我自己会多留心这几件事:

  1. 8563 别直接暴露到公网。 能加 arthas.password 就加上,Token 和密码要逐字相同。
  2. ognl、vmtool、redefine、retransform 会碰到运行中的类和行为。 AI 给出调用参数后,先看再执行。
  3. watch 和 trace 挂太久会有开销。 这种长时间命令适合 STREAMABLE,看完就停。
  4. 结论要能对上原始输出。 AI 的总结很好读,线程栈和 trace 树仍然值得自己扫一眼。

写在最后

Arthas 4 拥抱 AI,靠的就是这条 MCP 通道。诊断还是发生在正在运行的 JVM 里,变的是你怎么开口:可以把现象说出来,让 AI 去选命令、填参数、把结果收成一段话。

命令本身还在。看得懂 trace 的人,用起这扇新门会更稳。

相关推荐
TomEval1 小时前
【测AI】第17篇:大模型评测方法论 —— LLM 怎么测?
人工智能·python·aigc·测试用例
2601_965619691 小时前
新闻数据可视化视频:AI自动生成图表动画的完整流程
人工智能·信息可视化·音视频
志尊宝1 小时前
AI原生前端开发(018):端侧AI性能优化:模型加载、推理加速
人工智能·性能优化·ai-native
renhongxia11 小时前
RAG检索增强生成:打通大模型与外部知识的通道
大数据·人工智能·算法
jarvisuni1 小时前
【无标题】
人工智能·ai编程
沈阳光域纪元科技有限公司1 小时前
GEO 效果归因的技术难点:从曝光到引用的链式度量
人工智能·创业创新
QYR-分析1 小时前
2.80 亿增至 4.12 亿美元,CAGR5.6%:肌电诱发电位仪稳健扩容,神经电生理检测设备加速走向便携与数字化
大数据·网络·人工智能
宇哥(mf️取5r)1 小时前
环评验收屡次卡壳,模块化危废间该如何匹配新标准?
大数据·人工智能·制造
醒醒该学习了!1 小时前
Prompt 设计之带深度思考模型的提示方法和提示词优化
人工智能·prompt