Skip to content

Releases: alibaba/arthas

arthas-all-4.1.5

10 Jan 11:18

Choose a tag to compare

Arthas 4.1.5 Release Notes

发布日期: 2026-01-10

本次版本包含 15 个提交,主要新增堆内存分析功能、MCP viewfile 工具、ClassLoader 精确增强等重要特性。

🚀 新特性 (Features)

1. vmtool 新增堆内存分析功能 (#1915, #3122)

感谢 @yuankong11

新增两个强大的堆内存分析 action:

heapAnalyze - 分析堆内存占用

vmtool --action heapAnalyze --classNum 5 --objectNum 3
  • 从 GC Root 可达对象出发,统计各个类的实例数量与占用字节数
  • 输出占用最大的若干对象与类
  • 支持 --classNum 指定展示的类数量,--objectNum 指定展示的对象数量

referenceAnalyze - 分析对象引用链

vmtool --action referenceAnalyze --className java.lang.String --objectNum 5 --backtraceNum 3
  • 分析某个类的实例对象,输出占用最大的若干对象及其引用回溯链(从对象回溯到 GC Root)
  • 支持 --backtraceNum 参数指定回溯层数(-1 表示一直回溯到 root,0 表示不输出引用链)

2. watch/trace/stack/tt/monitor 支持 ClassLoader Hash (#3120)

所有增强类命令新增 -c/--classloader 参数,支持指定 ClassLoader 精确增强:

sc -d com.example.Foo
watch -c 3d4eac69 com.example.Foo bar '{params,returnObj}'
trace -c 3d4eac69 com.example.Foo bar
stack -c 3d4eac69 com.example.Foo bar
  • 解决同名类被多个 classloader 加载时的增强歧义问题
  • 可先用 sc -d 查看 classloader hash,再用 -c 指定

3. MCP 新增 viewfile 工具 (#3121)

MCP Server 新增文件查看工具,支持分段读取大文件:

  • 支持 cursor/offset 分段读取,避免一次性返回大量内容
  • 支持目录白名单配置(环境变量 ARTHAS_MCP_VIEWFILE_ALLOWED_DIRS
  • 默认允许目录:arthas-output、~/logs/

4. AnsiLog 可配置输出流 (#3128)

  • AnsiLog 支持自定义输出流配置,不再硬编码使用 System.out
  • 便于日志输出的灵活控制和重定向

5. as-package.sh 支持 --fast 模式

打包脚本新增 --fast 参数,支持快速打包模式,提升开发效率。

🐛 Bug 修复 (Bug Fixes)

1. 修复 MCP 禁用时访问 arthas-output 的空指针异常 (#3127)

修复当 MCP 功能禁用时,访问 arthas-output 目录会抛出 NullPointerException 的问题。

📦 依赖更新 (Dependencies)

  • 升级 byte-buddy 依赖至 1.18.3 版本

🔧 工程改进 (Engineering)

1. 新增 Telnet 停止泄漏集成测试 (#3125)

  • 新增 telnet-stop-leak 测试目录
  • 包含自动化测试脚本和 expect 脚本
  • 新增 GitHub Actions 工作流支持

2. MCP 集成测试增强

  • 新增 profiler 和 viewfile 工具的集成测试
  • 新增 ViewFileToolTest 单元测试

3. EnhancerTest 修复与增强

  • 修复 EnhancerTest 测试用例
  • 新增 ClassLoader hash 增强相关测试

相关 Issue

  • #1915 - vmtool 堆内存分析功能
  • #3120 - watch/trace 支持 classloader hash
  • #3121 - MCP viewfile 工具
  • #3122 - vmtool heap analyzer 实现
  • #3125 - 集成测试
  • #3127 - 修复 NullPointerException
  • #3128 - AnsiLog 可配置输出流

arthas-all-4.1.5-qlexpress

09 Jan 14:44

Choose a tag to compare

Pre-release

arthas 里的表达式支持 qlexpress 。

文档: https://github.com/alibaba/arthas/blob/qlexpress/site/docs/doc/qlexpress.md

感谢 @taokan @DQinYuan 的支持。欢迎大家测试。

arthas-all-4.1.4

29 Dec 06:21

Choose a tag to compare

Arthas 4.1.4 Release Notes

发布日期: 2025-12-29

🚀 新特性 (Features)

MCP Server 增强

  • 新增 Profiler MCP 工具 - 支持通过 MCP 协议进行性能分析 (profiler 命令)
  • 新增 sc MCP 工具 - 支持通过 MCP 搜索类 (#3107)
  • 新增 sm MCP 工具 - 支持通过 MCP 搜索方法
  • 新增 options MCP 工具 - 支持通过 MCP 查看/修改全局选项
  • 新增 StopTool - 支持通过 MCP 停止 Arthas
  • MCP Server 默认使用 STREAMABLE 协议 - 改进 SSE 流式传输,keepalive 间隔 15s (#3114)
  • 新增 MCP 集成测试模块 (arthas-mcp-integration-test) (#3115)

classloader 命令增强

  • classloader 支持 --url-classes 选项 - 可以查看 URLClassLoader 加载的类来源 (#3098)

🐛 Bug 修复 (Bug Fixes)

内存泄漏修复

  • 修复 Netty InternalThreadLocalMap ThreadLocal 泄漏问题 - 升级 termd 到 1.1.7.15 (#1794)
  • 修复 ThreadLocal ClassLoader 泄漏问题 - 改进 ThreadLocalWatch 实现

MCP Server 修复

  • 修复 MCP last-event-id 请求返回 404 问题 (#3118)
  • 修复 mcp-keep-alive-scheduler 线程未停止问题
  • 优化 MCP session 校验 - 防止 2 秒超时延迟

其他修复

  • 修复 json-format 输出时调用构造函数的问题 (#3111, #3116)
  • 修复 vmtool mallocTrim 问题 (#3109)

📚 文档更新 (Documentation)

  • 修复 tt 命令文档中 -t 参数示例
  • stop 命令文档中添加 retransform 相关说明
  • 更新 classloader 命令文档,添加 --url-classes 用法

🔧 依赖升级 (Dependencies)

依赖 旧版本 新版本
termd-core 1.1.7.14 1.1.7.15
mcp (新增) - 0.17.0

📦 构建变更 (Build)

  • 新增 JDK 17+ profile,自动包含 arthas-mcp-integration-test 模块
  • 修复 build-vmtool.yaml 构建配置

arthas-all-4.1.3

08 Dec 02:47

Choose a tag to compare

Arthas 4.1.3 Release Notes

发布日期: 2025-12-08

概述

Arthas 4.1.3 版本主要对 MCP Server 进行了重大重构,提升了架构的可维护性和扩展性,同时修复了多个稳定性问题,并增强了 watch/trace 等核心命令的功能。

🚀 新特性

MCP Server 架构重构

  • 重构 MCP Server 为 Streamable/Stateless 单服务架构 (#3096)
    • 简化了 MCP Server 的整体架构设计
    • 支持更灵活的部署方式

功能增强

  • watch/trace 命令支持 timeout 参数 (#3089)

    • 可设置命令执行超时时间,避免长时间阻塞
  • enhance 命令支持 lazy 模式

    • 延迟增强,提升灵活性

MCP 功能优化

  • MCP 支持 Arthas 认证McpStatelessServer 支持 arthas auth 和 userId
  • MCP 默认使用 ObjectView 格式:提升输出可读性
  • MCP watch/trace 工具 numberOfExecutions 默认值改为 1
  • MCP 默认超时时间调整为 30 秒

🐛 Bug 修复

  • 修复 SessionImpl 空值异常 (#3094)

    • 解决调用 setForegroundJob(null) 时的 NPE 问题
  • 修复 pom.xml 中 io.netty 依赖问题 (#3090, #3092)

📦 依赖更新

  • Netty BOM 版本保持 4.1.128.Final
  • MCP SDK 版本: 0.17.0

📊 统计信息

  • 提交数: 14 commits
  • 文件变更: 131 files changed
  • 代码变更: +1,300 / -717 行

👥 贡献者

感谢以下贡献者对本版本的贡献:

  • hengyunabc (11 commits)
  • Yeaury (2 commits)
  • XiLeePapa (1 commit)

arthas-all-4.1.2

27 Nov 17:09

Choose a tag to compare

Arthas 4.1.2 Release Notes

发布日期: 2025-11-27

🚀 新特性 (Features)

1. 用户追踪统计功能 (#3087)

  • 新增 userId 字段到 Session 接口
  • 支持从 HTTP 请求头 (X-User-Id) 和 URL 参数中提取 userId
  • 在所有命令执行路径中传递 userId(HTTP API、MCP Server、命令执行器)
  • session 命令输出中显示 userId
  • 将 userId 包含在使用统计报告中

2. MCP 协议升级至 2025-06-18 版本 (#3084)

  • 升级 MCP 协议版本,支持 elicitation 特性
  • 新增 MCP-Protocol-Version 支持
  • 增强 MCP Schema 定义(+566 行新增代码)
  • 新增 ProtocolVersions 类用于协议版本管理

🐛 Bug 修复 (Bug Fixes)

1. 修复 interrupt 状态判断问题 (#3079)

  • 修复当进程处于 TERMINATED 状态时,interrupt 操作应该成功的问题
  • 解决 HttpApiHandler.processExecRequest 在 job 状态为 TERMINATED 时的竞态条件

2. 修复拼写错误 (#3080)

  • 修复文档和代码中的拼写错误

📦 依赖升级 (Dependencies)

  • Netty: 升级至 4.1.128.Final (#3085)

🔧 其他改进 (Other Changes)

  • 移除 Expert 文档内容(清理约 60 个过时的 expert 问答文档)
  • 升级 GitHub CodeQL Action 至 v3
  • 禁用 Java CodeQL 分析

📊 变更统计

  • 文件变更: 100 个文件
  • 新增行数: +848
  • 删除行数: -4,250

👥 贡献者

感谢以下贡献者对本版本的贡献:

  • hengyunabc (6 commits)
  • Yeaury (1 commit)
  • yande2011 (1 commit)
  • hzqnull (1 commit)

完整变更日志: arthas-all-4.1.1...arthas-all-4.1.2

arthas-all-4.1.1

23 Oct 09:51

Choose a tag to compare

Arthas 4.1.1 Release Notes

发布日期: 2025-10-23

Arthas 4.1.1 是一个补丁版本,主要修复了通过远程 IP 访问时的认证失败问题。

🐛 Bug 修复

修复远程 IP 访问时的认证失败问题 (#3076)

问题描述:
在 4.1.0 版本中,当通过远程 IP 访问 Arthas Web Console 或 MCP Server 时,即使提供了正确的认证凭据,也会出现认证失败的情况。

根本原因:
BasicHttpAuthenticatorHandler 中的认证逻辑存在缺陷:

  • 已认证的 Subject 对象没有正确设置到 Channel 的 Attribute 中
  • 在 Session 中存在认证信息但 Channel Attribute 中缺失时,后续请求会重新触发认证流程
  • 远程连接场景下,本地 Principal 判断逻辑未能正确处理

修复内容:

  1. 重构认证流程: 将嵌套的 if (msg instanceof HttpRequest) 逻辑拆分为扁平化结构,提高代码可读性
  2. 提取公共方法: 新增 setAuthenticatedSubject() 方法,统一处理 Subject 的设置逻辑
  3. 修复状态同步: 确保 Subject 同时设置到 Channel Attribute 和 Session 中,保持状态一致性
  4. 改进会话处理: 在从 Session 中恢复认证状态时,同步设置 Channel Attribute

影响范围:

  • HTTP Basic Authentication
  • MCP Server Bearer/Basic Authentication
  • 远程 IP 访问场景

相关文件:

  • core/src/main/java/com/taobao/arthas/core/shell/term/impl/http/BasicHttpAuthenticatorHandler.java

贡献者: Zhang Yu (@3144550951)

📝 文档更新

  • 更新 CONTRIBUTING.md 贡献指南

📊 变更统计

  • 提交数: 3
  • 文件变更: 3 个文件
  • 代码行数: +54 行新增, -41 行删除

🔗 相关链接

  • Pull Request: #3076
  • Issue 跟踪: 修复远程 IP 访问认证失败问题
  • 提交范围: arthas-all-4.1.0...arthas-all-4.1.1

⬆️ 升级建议

从 4.1.0 升级到 4.1.1:

  • 无需任何配置变更
  • 无 API 破坏性变更
  • 建议所有使用远程访问功能的用户升级

📦 下载

请访问 GitHub Releases 下载最新版本。


完整变更日志: arthas-all-4.1.0...arthas-all-4.1.1

arthas-all-4.1.0

15 Oct 02:39

Choose a tag to compare

arthas-all-4.0.5

11 Mar 16:29

Choose a tag to compare

Issues: https://github.com/alibaba/arthas/milestone/56?closed=1

  • #2997 使用 async-profiler nightly 版本 ,解决 jdk 21 crash 问题

  • #2961 #2987 profiler 命令需要增加测试,检查文档里的使用说明

  • #2962 使用profiler loop功能报错

  • #2952 SpyAPI.atEnter 可能抛出 ConcurrentModificationException

  • #2955 新版本 ognl 有一个 UseStricterInvocation 模块,默认开启,执行 ognl 表达式容易出现: cannot be called from within OGNL invokeMethod() under stricter invocation mode

  • #2957 解决abortProcess的并发问题

  • #2990 arthas打印的 main class 失效,在新版本jdk里获取失败

  • #2986 升级netty版本到 4.1.119.Final

  • #2968 某些 ClassLoader 实现调用 getURLs() 可能抛出异常,需要处理

  • 升级asm 到 9.7.1

arthas-all-4.0.4

20 Nov 14:57

Choose a tag to compare

release 4.0.4

arthas-all-4.0.3

13 Nov 10:02

Choose a tag to compare

Issues: https://github.com/alibaba/arthas/milestone/54?closed=1

  • #2945 watch/trace 等补全 method 时,自动补全支持构造函数

  • #2936 quit 命令打印出提示,说明arthas仍在后台运行,执行 stop 才是彻底退出

  • #2941 修复 PackageInternalsFinder.fuse 在处理空包时(即自己没有类),会有 null 异常的问题

  • #2944 Revert "优化识别重定向" ,修复 watch等命令不支持构造函数 的问题