- arthas-packaging-4.1.8-bin.zip
- arthas-tunnel-server-4.0.5-fatjar.jar
- Arthas(阿尔萨斯)是阿里开源的 Java 在线诊断工具,免费、轻量、不用重启、不用改代码、不用重新部署,直接 attach 运行中的 JVM,定位线上问题神器。
一、核心特点(生产级)
- 不用重启服务
直接 attach 正在跑的 jar,热挂载,不影响业务。 - 不用改代码、不加日志
想看什么参数、返回值、异常,直接动态观测。 - 跨平台
Windows/Linux/macOS、Docker/K8s 都能用。 - 轻量
一个几百 KB 的脚本 /jar,不占资源。 - 完全免费开源
个人 / 公司都能用,无任何付费限制。 - 离线可用
不需要联网,内网环境照样跑。
二、它到底能解决什么问题?(最实用)
- CPU 高、load 高、接口慢
- 看哪个方法最耗 CPU
- 看调用栈、方法耗时
- 直接生成火焰图定位瓶颈
- 死锁、线程阻塞、线程池满
- thread 命令一键查死锁
- 看谁在等锁、谁阻塞了业务
- OOM、内存泄漏
- 看堆内存、GC 情况
- 导出 heap dump
- 配合 MAT 分析大对象
- 线上看不到入参、出参、异常
- 不用加日志、不用重新发版:
- watch 实时看方法入参、返回值
- trace 看链路耗时
- stack 看谁调用了这个方法
- 线上热更新、热替换(排查用)
- 临时修改 class 验证问题
- 不重启,快速验证修复方案
- 动态查看配置、Spring Bean
- 看某个 Bean 是否存在
- 看动态配置是否生效
- 反编译线上运行的 class,确认代码版本
- 集群 / 远程诊断
- 不登录服务器
- 不进容器
- 浏览器直接连线上 JVM
shell
# 用法是多个跑业务的机器,连到同一个诊断机器
# 统一连到诊断机器,默认放通7777Websocket端口,8080为web页面端口,ip为192.168.72.128,使用时请访问http://192.168.72.128:8080
java -jar arthas-tunnel-server-4.0.5-fatjar.jar
# 实际跑业务的机器,11312为业务程序的进程号
java -jar arthas-boot.jar 11312 --tunnel-server "ws://192.168.72.128:7777/ws" --app-name my-app --agent-id my-pc-11312