一不小心,它成为了 GitHub Alibaba Group 下 Star 最多的开源项目
简介: 随着微服务的流行,应用更加轻量和高效,但是带来的困境是线上问题排查越来越复杂困难。传统的 Java 排查问题,需要重启应用再进行调试,但是重启应用之后现场会丢失,问题难以复现。
来源 | 阿里巴巴云原生公众号
Arthas Star 突破 2.5 万啦

随着微服务的流行,应用更加轻量和高效,但是带来的困境是线上问题排查越来越复杂困难。传统的 Java 排查问题,需要重启应用再进行调试,但是重启应用之后现场会丢失,问题难以复现。
因此自 2018 年 9 月,阿里巴巴开源了久经考验,深受开发者喜爱的应用诊断利器 Arthas。
Arthas 通过创新的字节码织入技术,可以在应用无需重启时,查看调用上下文,高效排查问题;结合火焰图,可以直接定位热点,发现性能瓶颈;通过字节码替换,实现在线热更新代码;同时支持黑屏化和白屏化诊断,可以连接诊断大规模的集群。
在 2020 年 5 月时,我们做了 Arthas Star 破 2 万的回顾:
- 精益求精 | 开源应用诊断利器 Arthas GitHub Star 突破两万
冬去春又来,转眼间一年过去了,Arthas 的 Star 数突破 2.5 万了~
下面来回顾 Arthas 去年的一些数据和工作。
Arthas 过去一年的数据
1. Arthas Github Star 数突破 2.5W

2. Arthas Github Contributors 数
Arthas 的开源贡献者人数从 85 增长到 119,非常感谢他们的工作:

3. Arthas 登记公司数从 117 增长到 151 家
过去一年,Arthas 在工商银行、中原银行、朴朴科技、贝壳找房、斗鱼等生产场景落地,欢迎更多用户登记:https://github.com/alibaba/arthas/issues/111。
- 工商银行打造在线诊断平台的探索与实践
4. Arthas 在线教程学习人次:133,996,学习时长:51798小时
人均体验时长 23 分钟以上。

5. Arthas zip 包月均下载 6.5w 次
上线了 Arthas 新网站之后,我们统计平均每个月 arthas zip 包下载 6.5 万次。所以保守估计,Arthas 平均每个月诊断 6W+ 台机器。
6. Arthas 在 ATA 年度技术搜索排行第 6
阿里内部的技术论坛 ATA 发布年度热搜关键词 top 100,Arthas 作为 Java 诊断神器是唯一进入 top 10 的非集团指定产品。Arthas 在阿里内部的受欢迎程度可见一斑。

Arthas 过去一年的工作
在过去的一年里,Arthas 发布了 19 个 release 版本,做了大量的改进,下面列出一些重点:
- 全新的 Bytekit 字节码增强框架
- 完整支持 HTTP API,所有命令都完成适配
- Tenlet/WebSocket/HTTP API 支持统一的鉴权方案
- 全新的热更新命令 retransform
- Tunnel Server 支持集群部署,支持查看火焰图,内部上线支持流计算应用
- 增加 arthas-spring-boot-starter 模块,并支持 endpoint,用户可以用编程方式引入 Arthas
- 上线 arthas.aliyun.com 网站,更好服务国内用户
1. 全新的 Bytekit 字节码增强框架
Github:https://github.com/alibaba/bytekit
Bytekit 框架可以通过简洁的注解来实现字节码增强,具体功能点:
- 丰富的注入点支持
- 动态的 Binding
- 可编程的异常处理
- 比如在函数入口做增强:
public static class SampleInterceptor {
@AtEnter(inline = true, suppress = RuntimeException.class,
suppressHandler = PrintExceptionSuppressHandler.class)
public static void atEnter(@Binding.This Object object,
@Binding.Class Object clazz,
@Binding.Args Object[] args,
@Binding.MethodName String methodName,
@Binding.MethodDesc String methodDesc) {
System.out.println("atEnter, args[0]: " + args[0]);
}
- inline 支持
- invokeOrigin 技术
比如在 Dubbo Filter 里插入 APM 代码:
@Instrument(Interface = "org.apache.dubbo.rpc.Filter")
public abstract class DubboFilter_APM {
public Result invoke(Invoker<?> invoker, Invocation invocation)
throws RpcException {
System.err.println("invoker class: " +
this.getClass().getName());
Result result = InstrumentApi.invokeOrigin();
return result;
}
}
通过 Bytekit 框架,Arthas:
- 解决了多个 watch/trace 命令会重复某个类的问题
- 统一使用一个 Transformer,解决了多个增强命令冲突问题
- 实现了动态增强功能,通过指定 ListenerId,watch/trace 命令可以一起协作
2. HTTP API 支持
Http API 提供类似 RESTful 的交互接口,请求和响应均为 JSON 格式的数据。相对于 Telnet/WebConsole 的输出非结构化文本数据,Http API 可以提供结构化的数据,支持更复杂的交互功能。
3. 统一鉴权
在今天,应用的安全越来越受到重视。因此,诊断工具在提升诊断效率的同时,也要注意自身的安全性。
因为 Arthas 增加了 auth 命令,并且统一了 Telnet/WebSocket/HTTP API 的鉴权,参考:
4. 全新的热更新命令 retransform
之前,Arthas 里的 redefine 命令已经支持热更新功能,但是容易和 jad 命令或者其它 java agent 冲突。因此,我们开发了全新的 retransform 命令。
retransform 命令和 watch/trace 命令等是同一机制下实现的。如果对同一个类执行多个命令,则会经过下面的处理:
retransform 命令 -> watch 命令 -> trace命令
可以看到,retransform 命令执行后,不会影响 watch/trace 命令。
5. Tunnel Server 支持集群部署
通过 Arthas Tunnel Server/Client 可以远程管理/连接多个 Agent。Tunnel Server 新增加功能:
- 支持集群部署,支持 redis 存储
- 支持 http proxy,查看火焰图
6. arthas-spring-boot-starter
通过 arthas-spring-boot-starter,用户可以直接以编程方式引入 Arthas,结合 Tunnel Server,可以轻松实现集群化管理。
7. 全新的网站 arthas.aliyun.com
之前,Arthas 的文档放在 github io 的域名下,经常访问失败。为了改进访问速度,因此,我们建设了全新网站,用户访问文档和下载 Arthas,都更加方便快捷。
Arthas 有奖征文活动
Arthas 征文活动一共办了七期,共收到投稿 30+ 篇,下面是一些优秀的文章:
- 工商银行打造在线诊断平台的探索与实践
- Spring Boot 微服务性能下降九成!使用 Arthas 定位根因
- 是谁在调用我?使用 arthas+jprofiler 做复杂链路分析
- Arthas 定位 Dubbo 手动注册 Eureka 异常
- 用 Arthas 神器来诊断 HBase 异常进程
有奖征文活动还在继续,欢迎大家分享~
投稿地址:http://alibabacloud.mikecrm.com/9khcRrs
Arthas 规划
去年,我们规划了三个目标:
- RESTful API 支持
- 全新的字节码框架 ByteKit
- 插件化支持
实际上完成了 2.5 个,其中插件化支持,我们孵化出全新的 One Java Agent 项目来实现。
One Java Agent 项目的目标:
- 提供插件化支持,统一管理众多的 Java Agent
- 插件支持 install/unstall,需要插件方实现接口
- 支持传统的 java agent,即已经开发好的 java agent
从开源到现在,Arthas 在 Github 上一共有 1200 多个 Issue,最近我们回收了第一个 Issue:

在不断增强功能的同时,我们一直在持续改进 Arthas 的易用性。
- 不断改进帮助文档
- 上线 arthas.aliyun.com ,改进国内用户访问速度
- 为大部分命令准备交互式的在线教程
我们相信:赠人玫瑰之手,经久犹有余香,感谢广大用户的支持和喜爱。
欢迎登陆 start.aliyun.com 知行动手实验室体验 Arthas 57 个动手实验:
https://start.aliyun.com/handson-lab/#!category=arthas

Arthas 实验预览
一不小心,它成为了 GitHub Alibaba Group 下 Star 最多的开源项目的更多相关文章
- GitHub上最受欢迎的Android开源项目TOP20
以下这些开源项目都是从GitHub上筛选的,我强烈推荐android程序源代码有时间的时候自己在上面淘淘,或许能发现自己须要的开源程序. 了解开源项目有两个优点: 1.借鉴代码,一般来说.火爆的开源项 ...
- GitHub上最受欢迎的iOS开源项目TOP20
AFNetworking 在众多iOS开源项目中,AFNetworking可以称得上是最受开发者欢迎的库项目.AFNetworking是一个轻量级的iOS.Mac OS X网络通信类库,现在是GitH ...
- 40个GitHub上最受欢迎的iOS开源项目
40个GitHub上最受欢迎的iOS开源项目(一) http://www.weste.net/2013/8-1/92975.html 40个GitHub上最受欢迎的iOS开源项目(二) http:// ...
- GitHub上有很多不错的iOS开源项目
GitHub上有很多不错的iOS开源项目,个人认为不错的,有这么几个:1. ReactiveCocoa:ReactiveCocoa/ReactiveCocoa · GitHub:GitHub自家的函数 ...
- 推荐大家在GitHub 上值得关注学习的 iOS 开源项目
GitHub上有很多不错的iOS开源项目,和大家特别推荐以下几个项目: 1. ReactiveCocoa GitHub链接:ReactiveCocoa/ReactiveCocoa GitHub自家的函 ...
- mac下教你如何开源项目托管GitHub
自从google code关闭了下载服务了之后,GitHub作为了目前最好用的免费开源项目托管站点,众多开源项目都托管在github,其中不乏著名的播放器MPC-HC. 这里教大家如何把代码库上传到G ...
- 2016年GitHub排名前20的Python机器学习开源项目(转)
当今时代,开源是创新和技术快速发展的核心.本文来自 KDnuggets 的年度盘点,介绍了 2016 年排名前 20 的 Python 机器学习开源项目,在介绍的同时也会做一些有趣的分析以及谈一谈它们 ...
- GitHub上易于高效开发的Android开源项目TOP20--适合新手
1. android-async-http android-async-http是Android上的一个异步.基于回调的HTTP客户端开发包,建立在Apache的HttpClient库上. 2. an ...
- Hello!GitHub 好用好玩值得收藏的开源项目集合~
这是我许久以来从各处发现的极佳开源项目,希望分享给大家~ 如果帮到你了,给我个赞好嘛 编程语言类 ️learn-go-with-tests(通过单元测试学Go) GitHub地址:https://gi ...
- 看github上有18万star的第一开源项目如何教你学前端编程的
作为 Github | star 第一开源项目,已经超过18万 star:比之前最火的bootstrap的10万star还要多出8w,freeCodeCamp 越来越受关注,建站两年时间不到已经近40 ...
随机推荐
- Android Studio导入Android 4.2.2的WiFi-Display系统源码
Sink源码概述 Miracast Sink端源码最早出现在Android 4.2.2上,通过googlesource可以很方便的查看: https://android.googlesource.co ...
- C++ 调用 Python 总结(一)
PS:要转载请注明出处,本人版权所有. PS: 这个只是基于<我自己>的理解, 如果和你的原则及想法相冲突,请谅解,勿喷. 前置说明 本文作为本人csdn blog的主站的备份.(Bl ...
- Activity系列博客5篇
目录介绍 01.前沿介绍 02.handleLaunchActivity 03.performLaunchActivity 04.activity.attach 05.Activity的onCreat ...
- 网页端实现Excel转JSON
1. 引言 有时工作中拿到的数据是Excel表格,要在前端网页上使用,通常需要把文件转为JSON 微软的Microsoft Excel没有导出为JSON的功能,其他的第三方网站又不太信任 开源的Exc ...
- 记录--求你了,别再说不会JSONP了
这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 JSONP是一种很远古用来解决跨域问题的技术,当然现在实际工作当中很少用到该技术了,但是很多同学在找工作面试过程中还是经常被问到,本文将带 ...
- 深入在线文档系统的 MarkDown/Word/PDF 导出能力设计
深入在线文档系统的 MarkDown/Word/PDF 导出能力设计 当我们实现在线文档的系统时,通常需要考虑到文档的导出能力,特别是对于私有化部署的复杂ToB产品来说,文档的私有化版本交付能力就显得 ...
- read IEEE Standard for verilog(1)
IEEE Standard for Verilog Hardware Description Language 英语说明阅读,首先看导读.目录.摘要等内容. 摘要: 1 Abstract: The V ...
- Boruvka 简介
Boruvka 是一种最小生成树算法,用于求解稠密图的 MST. [典题]CF Xor-MST: 发现边数是 $n^2$ 级别的,直接把 Kruskal 和 Prim ban 了,所以考虑使用 Bor ...
- LiftPool:双向池化操作,细节拉满,再也不怕丢特征了 | ICLR 2021
论文参考信号处理中提升方案提出双向池化操作LiftPool,不仅下采样时能保留尽可能多的细节,上采样时也能恢复更多的细节.从实验结果来看,LiftPool对图像分类能的准确率和鲁棒性都有不错的提升,而 ...
- 《2020年IT行业项目管理调查报告》重磅发布
近年来,IT行业迅速发展,物联网.敏捷.DevOps等已成为行业的热门话题.为更好地了解行业现状,禅道项目管理软件联合各合作伙伴于2021年1月开展了针对IT行业的问卷调查,并推出了<2020年 ...