⭐⭐⭐ Spring Boot 项目实战 ⭐⭐⭐ Spring Cloud 项目实战
《Dubbo 实现原理与源码解析 —— 精品合集》 《Netty 实现原理与源码解析 —— 精品合集》
《Spring 实现原理与源码解析 —— 精品合集》 《MyBatis 实现原理与源码解析 —— 精品合集》
《Spring MVC 实现原理与源码解析 —— 精品合集》 《数据库实体设计合集》
《Spring Boot 实现原理与源码解析 —— 精品合集》 《Java 面试题 + Java 学习指南》

摘要: 原创出处 blog.csdn.net/longzhutengyue 「程序员码龙」欢迎转载,保留摘要,谢谢!


🙂🙂🙂关注微信公众号:【芋道源码】有福利:

  1. RocketMQ / MyCAT / Sharding-JDBC 所有源码分析文章列表
  2. RocketMQ / MyCAT / Sharding-JDBC 中文注释源码 GitHub 地址
  3. 您对于源码的疑问每条留言都将得到认真回复。甚至不知道如何读源码也可以请教噢。
  4. 新的源码解析文章实时收到通知。每周更新一篇左右。
  5. 认真的源码交流微信群。

Arthas(阿尔萨斯)——Java 应用的线上诊断“瑞士军刀”

一、什么是 Arthas?

Arthas 是阿里巴巴开源的一款 Java 线上诊断工具,能够在不重启、不修改代码的情况下,实时监控和诊断生产环境中的 Java 应用。

它能帮你解决这些问题:
  • 这个类是从哪个 jar 包加载的?为什么报 ClassNotFoundException?
  • 我改的代码怎么没生效?是不是分支错了?
  • 线上某个用户请求出错,但无法 debug,日志也不够?
  • 接口响应慢,到底哪里卡住了?
  • 如何查看 JVM 实时内存、线程、GC 状态?
  • 如何生成火焰图定位性能热点?
  • 怎样从 JVM 内部直接调用方法或获取对象实例?

✅ Arthas 支持 JDK 8+(推荐),支持Linux/Mac/Windows,采用命令行交互,Tab 补全强大,诊断效率极高。

二、离线安装 Arthas(推荐生产环境使用)

由于生产环境通常禁止外网访问,推荐使用离线方式安装 Arthas。

官方文档:https://arthas.aliyun.com/doc/

步骤 1:下载arthas全量包

下载arthas全量包、安装

浏览器输入网址下载:

https://github.com/alibaba/arthas/releases/download/arthas-all-4.0.5/arthas-bin.zip

或者进入github 地址手动下载

https://github.com/alibaba/arthas/releases

建议使用 v4.0.5 或更高版本(功能更全,支持 pm 命令等)。

步骤 2:将全量压缩包拷贝到目标服务器

scp arthas-bin.zip user@your-server:/opt/arthas/

步骤 3:启动 Arthas 并 attach 到目标 Java 进程

cd  /opt/arthas/
unzip arthas-bin.zip
java -jar /opt/arthas/arthas-boot.jar

会列出当前服务器上的 Java 进程,输入对应编号即可 attach。

[INFO] Found existing java process, please choose one:
* [1]: 12345 demo.jar
[2]: 67890 app.jar
1
[INFO] Attach success.
[arthas@12345]$

三、Docker 容器化集成 Arthas(Dockerfile 方式)

将 Arthas 预装进镜像,确保每个容器都具备诊断能力。

目录结构建议

your-project/
├── Dockerfile
├── pom.xml
├── src/
│ └── ...
└── arthas/
├── arthas-agent.jar
├── arthas-bin.zip
├── arthas-boot.jar
├── arthas-client.jar
├── arthas-core.jar
├── arthas.properties
├── arthas-spy.jar
├── as.bat
├── as-service.bat
├── as.sh
├── async-profiler/
├── install-local.sh
├── lib/
├── logback.xml
└── math-game.jar

Dockerfile 示例

FROM openjdk:8-jdk-alpine

# 创建 arthas 目录
RUN mkdir -p /opt/arthas

# 复制离线 arthas 包
COPY ./arthas /opt/arthas/

# 复制应用 jar
COPY target/your-app.jar /app.jar

# 启动脚本:先启动应用,再 attach arthas(可选自动连接 tunnel)
CMD java -jar /app.jar & \
sleep 15 && \
java -jar /opt/arthas/arthas-boot.jar --tunnel-server 'ws://tunnel-server:7777/ws' --app-name myapp --telnet-port 3658 --http-port 8563

sleep 15 确保应用完全启动后再 attach。

四、Kubernetes(K8s)环境集成 Arthas

方案 1:使用 arthas-k8s 工具(推荐)

helm repo add arthas https://alibaba.github.io/arthas
helm install arthas arthas/arthas-k8s

一键 attach:

arthas-k8s attach myapp-0

方案 2:在 Deployment 中预装 Arthas

apiVersion: apps/v1
kind:Deployment
metadata:
name:myapp
spec:
replicas:3
template:
spec:
containers:
-name:app
image:myapp:latest
command: ["/bin/sh"]
args:
-"-c"
- |
java -jar /app.jar &
sleep 15
java -jar /opt/arthas/arthas-boot.jar --tunnel-server 'ws://tunnel-server:7777/ws' --app-name myapp

五、多机/多 Pod 集中管理:Arthas Tunnel(推荐)

架构图(Mermaid)

优势

  • 统一入口,无需 SSH
  • 支持多租户、权限控制
  • 可记录诊断会话,便于审计

六、常用命令速查表(Arthas 快速上手)——实战扩展版

七、最佳实践建议

八、总结

Arthas 是每个 Java 工程师都应掌握的“线上救命工具”。

结合 离线安装 + Docker/K8s 集成 + arthas-tunnel,你将拥有:

随时可诊断、全局可监控、问题秒定位 的强大能力!

立即行动建议:

  • 下载 arthas-boot.jar 放入项目根目录
  • 修改 Dockerfile 预装 Arthas
  • 部署 arthas-tunnel-server,实现集中管理

从此,告别“重启加日志”,拥抱“实时诊断”新时代!

文章目录
  1. 1. 一、什么是 Arthas?
    1. 1.0.0.0.1. 它能帮你解决这些问题:
  • 2. 二、离线安装 Arthas(推荐生产环境使用)
    1. 2.0.1. 步骤 1:下载arthas全量包
    2. 2.0.2. 步骤 2:将全量压缩包拷贝到目标服务器
    3. 2.0.3. 步骤 3:启动 Arthas 并 attach 到目标 Java 进程
  • 3. 三、Docker 容器化集成 Arthas(Dockerfile 方式)
    1. 3.0.1. 目录结构建议
    2. 3.0.2. Dockerfile 示例
  • 4. 四、Kubernetes(K8s)环境集成 Arthas
    1. 4.0.1. 方案 1:使用 arthas-k8s 工具(推荐)
    2. 4.0.2. 方案 2:在 Deployment 中预装 Arthas
  • 5. 五、多机/多 Pod 集中管理:Arthas Tunnel(推荐)
    1. 5.0.1. 架构图(Mermaid)
    2. 5.0.2. 优势
  • 6. 六、常用命令速查表(Arthas 快速上手)——实战扩展版
  • 7. 七、最佳实践建议
  • 8. 八、总结
    1. 8.0.0.1. 立即行动建议: