Arthas 开源一周年,GitHub Star 16 K ,我们一直在坚持什么?
缘起
最近看到一个很流行的标题,《开源XX年,star XXX,我是如何坚持的》。
看到这样的标题,忽然发觉 Arthas 从 2018 年 9 月开源以来,刚好一年了,正好在这个秋高气爽的时节做下总结和回顾。
Arthas 是 Alibaba 开源的 Java 诊断工具,深受开发者喜爱。
Github:https://github.com/alibaba/arthas[1]
文档:https://alibaba.github.io/arthas[2]
回顾 Arthas Star 数的历史,一直保持快速增长,目前已经突破 16 K。
Arthas Github Star历史曲线
感谢用户的支持,既是压力也是动力。在过去开源的一年里, Arthas 发布了 7 个 Release 版本,我们一直坚持三点:
- 持续改进易用性
- 持续增加好用的命令
- 从开源社区中获取力量,回报社区
持续改进易用性
Arthas 一直把易用性放在第一位,在开源之后,我们做了下面的改进:
- 开发 arthas boot ,支持 Windows/Linux/Mac 统一体验
- 丝滑的自动补全,参考了 jshell 的体验
- 高效的历史命令匹配, Up/Down 直达
- 改进类搜索匹配功能,更好支持 lambda 和内部类
- 完善重定向机制
- 支持 JDK 9/10/11
- 支持 Docker
- 支持 rpm/deb 包安装
尽管我们在易用性下了很大的功夫,但是发现很多时候用户比较难入门,因此,我们参考了 k8s 的 Interactive Tutorial ,推出了 Arthas 的在线教程:
- Arthas 基础教程[3]
- Arthas 进阶教程[4]
通过基础教程,可以在交互终端里一步步入门,通过进阶教程可以深入理解 Arthas 排查问题的案例。
另外,为了方便用户大规模部署,我们实现了 tunnel server 和用户数据回报功能:
增加 tunnel server ,统一管理 Agent 连接
增加用户数据回报功能,方便做安全管控
持续增加好用的命令
Arthas 号称是 Java 应用诊断利器,那么我们自己要对得起这个口号。在开源之后, Arthas 持续增加了 10 多个命令。
- ognl 命令任意代码执行
- mc 线上内存编译器
- redefine 命令线上热更新代码
- logger 命令一键查看应用里的所有 logger 配置
- sysprop 查看更新 System Properties
- sysenv 查看环境变量
- vmoption 查看更新 VM option
- logger 查看 logger 配置,更新 level
- mbean 查看 JMX 信息
- heapdump 堆内存快照
下面重点介绍两个功能。
jad/mc/redefine 一条龙热更新线上代码
以 Arthas 在线教程 里的 UserController 为例:
1、使用 jad 反编译代码
2、使用 vim 编译代码
当 user id 小于 1 时,也正常返回,不抛出异常:
3、使用 mc 命令编译修改后的 UserController.java
4、使用 redefine 命令,因为可以热更新代码
通过 logger 命令查看配置,修改 level
在网站压力大的时候(比如双 11 ),有个缓解措施就是把应用的日志 level 修改为 ERROR 。那么有两个问题:
- 复杂应用的日志系统可能会有多个,那么哪个日志系统配置真正生效了?
- 怎样在线上动态修改 logger 的 level ?
通过 logger 命令,可以查看应用里 logger 的详细配置信息,比如 FileAppender输出的文件, AsyncAppender 是否 blocking 。
也可以在线修改 logger 的 level :
从开源社区中获取力量,回报社区
感谢 67 位 Contributors
Arthas 开源以来,一共有 67 位 Contributors ,感谢他们贡献的改进:
Arthas Contributors
社区提交了一系列的改进,下面列出一些点(不完整):
- 翻译了大部分英文文档的
- trace 命令支持行号
- 打包格式支持 rpm/deb
- 改进命令行提示符为 arthas@pid
- 改进对 windows 的支持
- 增加 mbean 命令
- 改进 webconsole 的体验
另外,有 83 个公司/组织登记了他们的使用信息,欢迎更多的用户来登记:
洐生项目
基于 Arthas ,还产生了一些洐生项目,下面是其中两个:
- Bistoury : 去哪儿网开源的集成了 Arthas 的项目
- arthas-mvel : 一个使用 MVEL 脚本的 fork
用户案例分享
广大用户在使用 Arthas 排查问题过程中,分享了很多排查过程和心得,欢迎大家来分享。
回馈开源
Arthas 本身使用了很多开源项目的代码,在开源过程中,我们给 netty, ognl, cfr 等都贡献了改进代码,回馈上游。
后记
在做 Arthas 宣传小册子时, Arthas 的宣传语是:
“赠人玫瑰之手,经久犹有余香”
希望 Arthas 未来能帮助到更多的用户解决问题,也希望广大的开发者对 Arthas 提出更多的改进和建议。
参考资料
[1]Arthas Github: https://github.com/alibaba/arthas
[2]Arthas 文档: https://alibaba.github.io/arthas
[3]Arthas基础教程:
https://alibaba.github.io/arthas/arthas-tutorials?language=cn&id=arthas-basics
[4]Arthas进阶教程:
https://alibaba.github.io/arthas/arthas-tutorials?language=cn&id=arthas-advanced
双11福利来了!先来康康#怎么买云服务器最便宜# [并不简单]参团购买指定配置云服务器仅86元/年,开团拉新享三重礼:1111红包+瓜分百万现金+31%返现,爆款必买清单,还有iPhone 11 Pro、卫衣、T恤等你来抽,马上来试试手气:https://www.aliyun.com/1111/2019/home?utm_content=g_1000083110
本文作者:中间件小哥
本文为云栖社区原创内容,未经允许不得转载。
Arthas 开源一周年,GitHub Star 16 K ,我们一直在坚持什么?的更多相关文章
- 新的开始 | Arthas GitHub Star 破万后的回顾和展望
一切新的开始,都始于一个里程碑. 2月20日上午,Java 开源诊断工具 Arthas 的 GitHub Star 突破10000,距离开源后的第一个Release 版发布仅 147 天. 从中,我们 ...
- GitHub Android 最火开源项目Top20 GitHub 上的开源项目不胜枚举,越来越多的开源项目正在迁移到GitHub平台上。基于不要重复造轮子的原则,了解当下比较流行的Android与iOS开源项目很是必要。利用这些项目,有时能够让你达到事半功倍的效果。
1. ActionBarSherlock(推荐) ActionBarSherlock应该算得上是GitHub上最火的Android开源项目了,它是一个独立的库,通过一个API和主题,开发者就可以很方便 ...
- Apache ServiceComb 开源两周年,聊聊其与微服务的前世今生
欢迎添加华为云小助手微信(微信号:HWCloud002 或 HWCloud003),输入关键字"加群",加入华为云线上技术讨论群:输入关键字"最新活动",获取华 ...
- 「newbee-mall新蜂商城开源啦」GitHub 上最热门的 Spring Boot 项目,我也要做一次靓仔!
没有一个冬天不可逾越,也没有一个春天不会到来. 介绍一下新蜂商城的近况,同时,新蜂商城 Vue 版本目前也在开发中,在这篇文章里我也向大家公布一下新蜂商城 Vue 版本的开发进度,和大家同步一下,在不 ...
- 我成了 GitHub Star
能够成为官方认证的 GitHub Star(明星)我和你们一样十分震惊! 可能很多读者不知道这个 GitHub Star 是什么,我先来介绍下它: GitHub Stars(明星)是 GitHub 官 ...
- 感谢有你!Apache DolphinScheduler 项目 GitHub star 突破 8k
本周伊始,Apache DolphinScheduler 项目在 GitHub 上的 Github Star 总数首次突破 8K.目前,Apache DolphinScheduler 社区已经拥有 C ...
- Android IOS WebRTC 音视频开发总结(七四)-- WebRTC开源5周年了,Google怎么看?
本文最早发表在我们的微信公众号上(微信ID:blackerteam),支持原创,详见这里, 2016年6月9日是WebRTC开源5周年的日子,Google WebRTC负责人Harald在社区里面写了 ...
- 国内互联网公司的开源项目及github地址汇总
国内互联网公司的开源项目及github地址汇总 阿里 阿里的开源项目很多,这也跟@淘宝正明的开源态度密不可分.有很多重量级的项目,例如LVS.Tengine,或者很有实践价值的中间件,例如 MetaQ ...
- go语言的一个gui 开源 项目 https://github.com/andlabs/ui
go语言的一个gui 开源 项目 https://github.com/andlabs/ui 1 安装 mingw-w64 链接地址: http://mingw-w64.sourceforge. ...
随机推荐
- Laravel框架使用融云服务端SDK
方法一: 使用第三方依赖安装(在项目根目录) 第一步:安装 composer require latrell/rongcloud dev-master 第二步:更新依赖包 c ...
- jmeter.bat无法启动
jmeter.bat启动时提示:'findstr' 不是内部或外部命令,也不是可运行的程序或批处理文件. 学习中遇到的问题: 'findstr' 不是内部或外部命令,也不是可运行的程序或批处理文件. ...
- BZOJ 2547: [Ctsc2002]玩具兵(二分答案+二分图匹配)
传送门 解题思路 可以发现天兵不用管,答案的一个上界是\(2*k\),就是天兵一个个换.刚开始写了个拆\(6\)点的网络流,调了半天发现自己假了..说说正解,首先可以发现交换士兵其实就是种类的交换,那 ...
- Original blog
其实也没几篇... I am still too young. http://blog.csdn.net/greyqz 没什么东西,就别去翻了... 还是博客园好用,发博客不用审核,CSDN审核不好玩
- hdu 5396 Expression
考虑到此题麻烦了某hust大神&体现出了自己数学能力的欠缺 虽然最近一直比较忙 还是把这题的题解写下来吧 首先看完数据范围后 应该有不少人会反应到是$n^3$的DP 以$F[i][j]$表示从 ...
- C++ win32 dll 引用外部CLR,加载托管程序集异常-Error 10 error LNK2019: unresolved external symbol _CLRCreateInstancet
异常: Error 10 error LNK2019: unresolved external symbol _CLRCreateInstance@12 referenced in function ...
- 术语-MOSS-微软协作工具:MOSS(微软协作工具)
ylbtech-术语-MOSS-微软协作工具:MOSS(微软协作工具) MOSS -- Microsoft Office Sharepoint Server,是一款为企业客户而设计的.基于web的内容 ...
- 建站手册-网站构建:万维网联盟(World Wide Web Consortium)
ylbtech-建站手册-网站构建:万维网联盟(World Wide Web Consortium) 1.返回顶部 1. http://www.w3school.com.cn/site/site_w3 ...
- Php 单元测试 phpunit && codecept
Php 单元测试 phpunit && codecept phpunit: Windows版本 整体上说,在 Windows 下安装 PHAR 和手工在 Windows 下安装 Com ...
- QT pro文件的一种通用配置
#设置UI文件目录 UI_DIR = ./ui CONFIG(debug, debug|release) { #设置debug配置下编译生成文件的路径 TARGET = $$join(TARGET ...