陈奇网络工作室

Arthas开源一周年GitHubStar16K我们在继续做什么?

建设工作站服务器

吉利

我最近看了流行的标题。 是《开源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

相关推荐

后台-系统设置-扩展变量-手机广告位-内容页底部广告位3