简介:随着微服务的风行,利用更加轻量和高效,然而带来的窘境是线上问题排查越来越简单艰难。传统的 Java 排查问题,须要重启利用再进行调试,然而重启利用之后现场会失落,问题难以复现。
起源 | 阿里巴巴云原生公众号
Arthas Star 冲破 2.5 万啦
1.png
开源地址:_h_ttps://github.com/alibaba/arthas
文档:https://arthas.aliyun.com/doc/
随着微服务的风行,利用更加轻量和高效,然而带来的窘境是线上问题排查越来越简单艰难。传统的 Java 排查问题,须要重启利用再进行调试,然而重启利用之后现场会失落,问题难以复现。
因而自 2018 年 9 月,阿里巴巴开源了久经考验,深受开发者青睐的利用诊断利器 Arthas。
Arthas 通过翻新的字节码织入技术,能够在利用无需重启时,查看调用上下文,高效排查问题;联合火焰图,能够间接定位热点,发现性能瓶颈;通过字节码替换,实现在线热更新代码;同时反对黑屏化和白屏化诊断,能够连贯诊断大规模的集群。
在 2020 年 5 月时,咱们做了 Arthas Star 破 2 万的回顾:
精益求精 | 开源利用诊断利器 Arthas GitHub Star 冲破两万
冬去春又来,转眼间一年过来了,Arthas 的 Star 数冲破 2.5 万了~
上面来回顾 Arthas 去年的一些数据和工作。
Arthas 过来一年的数据
- Arthas Github Star 数冲破 2.5W
2.png - Arthas Github Contributors 数
Arthas 的开源贡献者人数从 85 增长到 119,非常感谢他们的工作:
3.png
- Arthas 注销公司数从 117 增长到 151 家
过来一年,Arthas 在工商银行、中原银行、朴朴科技、贝壳找房、斗鱼等生产场景落地,欢送更多用户注销:https://github.com/alibaba/ar…
工商银行打造在线诊断平台的摸索与实际
- Arthas 在线教程学习人次:133,996,学习时长:51798 小时
人均体验时长 23 分钟以上。
4.png
- Arthas zip 包月均下载 6.5w 次
上线了 Arthas 新网站之后,咱们统计均匀每个月 arthas zip 包下载 6.5 万次。所以激进预计,Arthas 均匀每个月诊断 6W+ 台机器。 - Arthas 在 ATA 年度技术搜寻排行第 6
阿里外部的技术论坛 ATA 公布年度热搜关键词 top 100,Arthas 作为 Java 诊断神器是惟一进入 top 10 的非团体指定产品。Arthas 在阿里外部的受欢迎水平可见一斑。
5..png
Arthas 过来一年的工作
在过来的一年里,Arthas 公布了 19 个 release 版本,做了大量的改良,上面列出一些重点:
全新的 Bytekit 字节码加强框架
残缺反对 HTTP API,所有命令都实现适配
Tenlet/WebSocket/HTTP API 反对对立的鉴权计划
全新的热更新命令 retransform
Tunnel Server 反对集群部署,反对查看火焰图,外部上线反对流计算利用
减少 arthas-spring-boot-starter 模块,并反对 endpoint,用户能够用编程形式引入 Arthas
上线 arthas.aliyun.com 网站,更好服务国内用户
- 全新的 Bytekit 字节码加强框架
Github:https://github.com/alibaba/by…
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 命令能够一起合作
- HTTP API 反对
https://arthas.aliyun.com/doc…
Http API 提供相似 RESTful 的交互接口,申请和响应均为 JSON 格局的数据。绝对于 Telnet/WebConsole 的输入非结构化文本数据,Http API 能够提供结构化的数据,反对更简单的交互性能。 - 对立鉴权
在明天,利用的平安越来越受到重视。因而,诊断工具在晋升诊断效率的同时,也要留神本身的安全性。
因为 Arthas 减少了 auth 命令,并且对立了 Telnet/WebSocket/HTTP API 的鉴权,参考:
https://arthas.aliyun.com/doc…
- 全新的热更新命令 retransform
https://arthas.aliyun.com/doc…
之前,Arthas 里的 redefine 命令曾经反对热更新性能,然而容易和 jad 命令或者其它 java agent 抵触。因而,咱们开发了全新的 retransform 命令。
retransform 命令和 watch/trace 命令等是同一机制下实现的。如果对同一个类执行多个命令,则会通过上面的解决:
retransform 命令 -> watch 命令 -> trace 命令
能够看到,retransform 命令执行后,不会影响 watch/trace 命令。
- Tunnel Server 反对集群部署
https://arthas.aliyun.com/doc…
通过 Arthas Tunnel Server/Client 能够远程管理 / 连贯多个 Agent。Tunnel Server 新减少性能:
反对集群部署,反对 redis 存储
反对 http proxy,查看火焰图
- arthas-spring-boot-starter
https://arthas.aliyun.com/doc…
通过 arthas-spring-boot-starter,用户能够间接以编程形式引入 Arthas,联合 Tunnel Server,能够轻松实现集群化治理。 - 全新的网站 arthas.aliyun.com
https://arthas.aliyun.com/
之前,Arthas 的文档放在 github io 的域名下,常常拜访失败。为了改良访问速度,因而,咱们建设了全新网站,用户拜访文档和下载 Arthas,都更加方便快捷。
Arthas 有奖征文活动
Arthas 征文活动一共办了七期,共收到投稿 30+ 篇,上面是一些优良的文章:
工商银行打造在线诊断平台的摸索与实际
Spring Boot 微服务性能降落九成!应用 Arthas 定位根因
是谁在调用我?应用 arthas+jprofiler 做简单链路剖析
Arthas 定位 Dubbo 手动注册 Eureka 异样
用 Arthas 神器来诊断 HBase 异样过程
有奖征文活动还在持续,欢送大家分享~
投稿地址:http://alibabacloud.mikecrm.c…
Arthas 布局
去年,咱们布局了三个指标:
RESTful API 反对
全新的字节码框架 ByteKit
插件化反对
实际上实现了 2.5 个,其中插件化反对,咱们孵化出全新的 One Java Agent 我的项目来实现。
https://github.com/alibaba/on…
One Java Agent 我的项目的指标:
提供插件化反对,对立治理泛滥的 Java Agent
插件反对 install/unstall,须要插件方实现接口
反对传统的 java agent,即曾经开发好的 java agent
从开源到当初,Arthas 在 Github 上一共有 1200 多个 Issue,最近咱们回收了第一个 Issue:
6.png
在一直加强性能的同时,咱们始终在继续改良 Arthas 的易用性。
不断改进帮忙文档
上线 arthas.aliyun.com,改良国内用户访问速度
为大部分命令筹备交互式的在线教程
咱们置信:赠人玫瑰之手,经久犹有余香,感激宽广用户的反对和青睐。
欢送登陆 start.aliyun.com 知口头手实验室体验 Arthas 57 个入手试验:
https://start.aliyun.com/hand…
1617788975354-c95a0286-f1af-4bba-b19b-7b2d5e44df6d.gif
Arthas 试验预览
原文链接
本文为阿里云原创内容,未经容许不得转载。