建设工作站服务器
吉利
我最近看了流行的标题。 是《开源XX年,star XXX,我是如何坚持的》。
看了这样的标题,突然发现Arthas在2018年9月开放源代码以来,正好有一年了。 正好在这个秋天清爽的时期进行了总结和回顾。
Arthas是Alibaba的开源Java诊断工具,深受开发人员的喜爱。
Github :
3359 github.com/Alibaba/Arthas [1]
文档:
3359 Alibaba.github.io/Arthas [2]
回顾Arthas Star数量的历史,它持续快速增长,目前已突破16 K。
Arthas Github Star历史曲线
感谢用户的支持既是压力也是动力。 在过去的开源一年中,Arthas发布了7个版本。 我们一直坚持三点:
持续提高易用性
继续增加方便使用的命令
从开源社区获得力量,回报社区
持续提高易用性
Arthas将易用性作为首要考虑事项,但在开放源代码后,进行了以下改进。
开发arthas boot,支持Windows/Linux/Mac统一体验
丝绸的自动补充,参考了j-shell的体验
高效的历史命令匹配,向上/向下直行
改进类搜索匹配功能,支持lambda和内部类
完善重定向机制
支持JDK 9/10/11
支持文档
支持rpm/deb软件包的安装
我们在易用性上做了很大努力,但往往发现用户很难入门。 因此,我们参考k8s的交互式教程,推出了Arthas在线教程:
Arthas基础教程[3]
Arthas高级教程[4]
在基础教程中,可以通过交互式终端进行逐步入门,高级教程可以深入理解Arthas诊断问题的案例。
此外,为了便于用户的大规模部署,实现了tunnel server和用户数据收益率功能。
添加隧道服务器并批量管理代理连接
提高用户的数据收益率,便于安全管理
继续增加方便使用的命令
Arthas被称为Java应用诊断利器,所以我们自己必须应对这个口号。 开源后,Arthas继续增加了10多个命令。
ognl命令执行任意代码
mc在线内存编译器
redefine命令在线热更新代码
logger命令一键显示APP应用程序中的所有logger配置
sysprop显示更新系统属性
查看sysenv环境变量
vmoptionview更新VMoption
逻辑确认逻辑的构成,更新逻辑
mbean将显示JMX信息
头堆内存快照
重点介绍两个功能。
jad/mc/redefine一致的热更新在线代码
以Arthas在线教程中的UserController为例。
1、使用jad反编译代码
jad-- source-only com.example.demo.Arthas.user.user controller/tmp/user controller.Java
2、使用vim编译代码
即使user id小于1,也不会抛出异常而恢复正常。
@getmapping(/user/{id} ) )。
公共标识( pathvariableintegerid )。
Logger.info(id:{},id );
if (身份!=空id 1
returnnewuser(id,&; #039; name&; #039; id;
//thrownewillegalargumentexception ( & amp; #039; id1 );
}else{
returnnewuser(id,&; #039; name&; #039; id;
}
}
3、使用mc命令编译修改后的UserController.java
$ MC/tmp/user controller.Java-d/tmp
Memorycompileroutput :
/tmp/com/example/demo/Arthas/user/user controller.class
affect(row-CNT:1 ) costin346ms
4、使用redefine命令。 因为可以热更新代码
$ redefine/tmp/com/example/demo/Arthas/user/user controller.class
redefinesuccess,size:1
使用logger命令查看配置并更改level
在站点压力较大时(例如双11 ),有一种缓解措施是将APP的日志level修改为ERROR。 那么有两个问题:
如果可能有多个复杂APP应用的日志系统,则实际上启用了哪些日志系统配置?
如何在线动态修改logger的级别?
logger命令可以检查APP查询中logger的详细配置信息,包括从文件应用程序输出的文件以及async应用程序是否阻塞。
[arthas@2062]$logger
名称根
classch.QoS.logback.classic.logger
classloadersun.misc.launcher $ app class loader @2a139 a55
classLoaderHash2a139a55
levelINFO
高效级别信息
添加真
code source file:/users/hengyunabc/. m2/repository/ch/QoS/logback/logback-classic/1.2.3/logback-clagback
appendersnameCONSOLE
class ch.QoS.log back.core.console appender
classloadersun.misc.launcher $ app class loader @2a139 a55
classLoaderHash2a139a55
targetSystem.out
名称应用程序
class ch.QoS.log back.core.rolling.rolling file appender
classloadersun.misc.launcher $ app class loader @2a139 a55
classLoaderHash2a139a55
fileapp.log
名称同步
classch.QoS.logback.classic.async appender
classloadersun.misc.launcher $ app class loader @2a139 a55
classLoaderHash2a139a55
阻止假
appender ref [ APP ]
也可以在线修改logger的level :
[ Arthas @ 2062 ] $ logger-- name root-- level debug
更新日志错误。
从开源社区获得力量,回报社区
感谢67位Contributors
自Arthas开源以来,共有67个Contributors,感谢他们贡献的改善:
Arthas Contributors
社区提出了一系列的改善。 以下列举几点。
翻译了大部分的英语文档
trace命令支持行号
包格式支持rpm/deb
将命令行提示改进为arthas@pid
改进了对windows的支持
添加mbean命令
提高web控制台的易用性
另外,有83个公司/组织注册了使用信息,欢迎更多用户注册。
洙生项目
基于Arthas,洙生项目也应运而生。 以下是其中的两个。
Bistoury :集成开源Arthas的项目要去哪里
Arthas-mvel :使用mvel脚本的传真
共享用户用例
广大用户在使用Arthas排查问题的过程中,与大家分享了许多故障排查过程和体会,欢迎大家分享。
开放源代码
Arthas本身使用了许多开源项目的代码,在开源过程中为netty、ognl、cfr等改进代码做出了贡献,并向上游进行了反馈。
后述
制作Arthas宣传小册子时,Arthas的宣传语如下。
"送玫瑰的手,久久地芬芳. "
希望Arthas的未来能有助于更多用户解决问题。 此外,许多开发人员希望对Arthas提出更多的改进和建议。
原文链接
本文为云栖社区原创内容,未经许可不得转载。
详情请访问云服务器、域名注册、虚拟主机的问题,请访问西部数码代理商官方网站: www.chenqinet.cn