当前位置: 首页 > news >正文

Arthas介绍与使用

Arthas(阿尔萨斯)是阿里开源的 Java 线上诊断利器,核心能力是不重启、不改代码,实时排查 JVM 进程的 CPU、内存、线程、类加载、方法入参 / 返回值 / 异常、性能瓶颈等问题,生产环境排障必备Arthas。


一、核心定位与解决痛点

  • 无侵入:基于Java Agent + Instrumentation + ASM,动态 attach 到运行中的 JVM。
  • 全场景:支持 JDK6+,跨 Linux/Mac/Windows,兼容 Spring Boot/Dubbo/Tomcat 等主流框架。
  • 解决问题
    • 代码没生效?→ 反编译看线上真实代码(jad
    • CPU 飙高?→ 定位最热线程(thread -n
    • 接口慢?→ 追踪调用链耗时(trace
    • 内存泄漏?→ 查对象实例、堆信息(heapdump
    • 类冲突?→ 查类加载来源(sc)Arthas

二、快速安装与启动(推荐 arthas-boot)

bash

运行

# 1. 下载启动器 curl -O https://arthas.aliyun.com/arthas-boot.jar # 2. 启动并选择 Java 进程(输入序号回车) java -jar arthas-boot.jar # 3. 直接指定 PID(免交互) java -jar arthas-boot.jar <PID>

成功后进入 Arthas 命令行,也可通过浏览器 Web UI(默认 8563 端口)操作Arthas。

三、高频核心命令(直接复制可用)

1. 全局看板(dashboard)

实时显示 CPU、内存、GC、线程概况,一眼看系统健康度。

bash

运行

dashboard
2. 线程排查(thread)

bash

运行

# 查 CPU 最高前 3 线程堆栈 thread -n 3 # 检测死锁 thread -d # 查看指定线程详情 thread <线程ID>
3. 类与代码排查(sc/sm/jad)

bash

运行

# 查已加载类(支持模糊匹配) sc com.example.*Controller* # 查类的所有方法 sm com.example.DemoController # 反编译线上类(看真实运行代码) jad com.example.DemoController # 反编译指定方法并保存到文件 jad --source-only com.example.DemoController list > /tmp/DemoController.java
4. 方法观测(watch)

最常用:实时看方法入参、返回值、异常,无需加日志。

bash

运行

# 观测入参+返回值(展开 3 层) watch com.example.UserService login "{params,returnObj}" -x 3 # 只看异常 watch com.example.UserService login "{throwExp}" -e -x 2 # 按条件过滤(如用户 ID=1001) watch com.example.UserService login "{params,returnObj}" "params[0].id==1001" -x 3
5. 性能瓶颈追踪(trace)

定位慢接口中的具体耗时方法:

bash

运行

# 追踪整个调用链 trace com.example.OrderService createOrder # 只显示耗时 >500ms 的链路 trace com.example.OrderService createOrder '#cost > 500'
6. 热更新代码(紧急修 Bug)

bash

运行

# 1. 反编译线上代码到文件 jad --source-only com.example.BugClass > BugClass.java # 2. 本地修改 BugClass.java # 3. 编译并热更新 mc /path/to/BugClass.java redefine /path/to/BugClass.class

四、工作原理(极简)

  1. Attach 机制:Arthas 进程通过VirtualMachine.attach(pid)挂载到目标 JVM。
  2. Agent 注入:注入arthas-agent.jar,通过Instrumentation注册字节码增强器。
  3. 字节码增强:用 ASM 修改目标类字节码,植入监控 / 埋点逻辑(如方法前后切面)。
  4. 数据回传:目标 JVM 采集数据后通过 Telnet/HTTP 回传给 Arthas 客户端展示。

五、常用命令速查表

表格

命令作用
dashboard全局监控面板
thread -n 3查 CPU 最高线程
jad <类名>反编译线上类
watch <方法>观测方法入参 / 返回值
trace <方法>追踪调用链耗时
sc <类名>查看已加载类
sm <类名>查看类方法
heapdump导出堆快照
redefine热更新类

六、总结

Arthas 是 Java 工程师线上排障的必备工具,掌握它能大幅提升问题定位效率,避免 “加日志→重启→复现” 的低效循环。

http://www.jsqmd.com/news/799613/

相关文章:

  • uniapp发开微信小程序处理手机物理按键逻辑
  • Jetpack Compose × Gemini实时语义理解:如何用200行Kotlin代码构建离线语音助手,已通过Play Integrity API v4认证
  • 【源码深度】Android 系统底层机制精讲|Linux 进程 Binder 通信 ART 虚拟机|Android 全栈体系 150 讲 - 41
  • 基于本地大模型与OCR的桌面自动化智能体实现指南
  • InjectFix实战解析:在Unity IL2CPP环境下实现C#热修复的权衡与策略
  • SITS 2026多目标优化落地指南:从梯度冲突到任务解耦,7步实现Pareto前沿精度提升23.6%
  • 如何使用Arthas进行内存分析?
  • Zotero茉莉花插件:3大功能轻松管理中文文献,科研效率翻倍提升
  • i.MX 6UL/6ULL开发环境配置与驱动开发实战
  • VS Code主题设计:ini Theme如何通过认知减负提升编码效率
  • Arduino Uno R3 bootloader烧写避坑全记录:从USBasp驱动安装到熔丝位设置(Win10/11实测)
  • 图解人工智能(8)图灵测试作为智能与否的标准
  • 别再混淆了!一文搞懂USB HID描述符、报告描述符和物理描述符的区别与联系
  • 生成引擎优化(GEO)与内容创作融合提升用户体验的实施策略
  • 基于MCP协议构建统一AI编程助手:OpenWork v12架构与实战
  • 惠普tank 2606,开机提示错误代码 er-08 ,加了粉还是报错er08,黄灯闪烁成像鼓接近寿命期限报错,怎么办?
  • 3PEAK思瑞浦 TP2262-SR SOP8 运算放大器
  • 全方位降本增效,Captain AI重构OZON运营成本结构
  • Arm嵌入式多线程编程:原理、实践与优化
  • LDO电源设计:低噪声、高PSRR与系统可靠性的工程实践
  • Gemini3.1Pro推理能力深度解析
  • 碳化硅器件在PFC电路中的优势与应用
  • LLM应用架构实战:从Prompt工程到AI-Agent工作流设计
  • 暖心指南|心理干预案例分享关键点!
  • 别再花钱买Aseprite了!手把手教你用Visual Studio 2019和CMake免费编译最新版(Windows 10/11保姆级教程)
  • Glide-in-Place技术:VR足部压力感应运动控制解析
  • SQL Server、MySQL、Oracle 核心区别对比
  • 深之蓝冲刺科创板:年营收3.55亿,扣非后净亏5689万 顺为是股东
  • 如何让经典DirectX游戏在现代Windows上完美运行:DDrawCompat终极兼容解决方案
  • Nuendo 4.3 死活没声音?别急着换电脑,先检查这三个声卡驱动设置(附F4快捷键用法)