查看原文
其他

GitHub 标星 25k:阿里开源的 Java 诊断工具

老逛 逛逛GitHub 2021-08-19
Arthas 是阿里巴巴开源的 Java 诊断工具,深受开发者喜爱,在 GitHub 上已经有 25.6K Star了。
这个诊断工具可以帮助开发人员或者运维人员查找问题,分析性能,bug追踪。为了方便程序员快手上手,该工具也提供了用户文档:

开源:https://github.com/alibaba/arthas

文档:https://arthas.aliyun.com/doc/

当你遇到以下类似问题而束手无策时,Arthas 可以帮助你解决:
0. 这个类从哪个 jar 包加载的?1. 为什么会报各种类相关的 Exception?2. 我改的代码为什么没有执行到?3. 难道是我没 commit?4. 分支搞错了?5. 遇到问题无法在线上 debug,难道只能通过加日志再重新发布吗?6. 线上遇到某个用户的数据处理有问题,但线上同样无法 debug,线下无法重现!7. 是否有一个全局视角来查看系统的运行状况?8. 有什么办法可以监控到JVM的实时运行状态?9. 怎么快速定位应用的热点,生成火焰图?
Arthas支持 JDK 6+,支持 Linux/Mac/Windows,采用命令行交互模式,同时提供丰富的 Tab 自动补全功能,进一步方便进行问题的定位和诊断。
诊断工具可以以全局视角来查看系统的运行状况、健康状况。能反编译源码,查看 jvm 加载的是否为预期的文件内容。

可以查看某个方法的返回值,参数等,计算方法内调用路径及各方法调用耗时。还能够查看 jvm 运行状况以及外部 .class 文件重新加载到 jvm 里。

说几个你会经常遇到的场景,Arthas 便可派上用场:
当我们调用一个接口时,接口返回了异常信息。如果该异常信息没有清晰定位到某行代码,那么我们只能依靠大脑回忆代码,可能是哪里发生了错误,如果无法估计,一般情况下就会进入测试环境,模拟复现,费时费力。
再比如进行某个查询,耗时20s,我们想要分析一下到底是哪些代码导致的。但是该方法内部又穿插调用了其它业务功能方法,又不想手动嵌入代码的方式调试查找,因为这样容易遗漏、费力还费时。
而 arthas便可以为我们解决上述问题,该工具的使用教程和方法可以参考这个文档:
用户文档:https://arthas.aliyun.com/doc/

[1] https://www.jianshu.com/p/95449939cca3

[2] https://github.com/alibaba/arthas

最后,防止找不到本篇文章,可以收藏点赞,方便翻阅查找。欢迎关注公众号 逛逛GitHub(ggGithub),进群请后台联系我。


推荐阅读
1. Nginx 可视化配置神器
2. B站,牛啊。
3. 这俩 AI 项目贼有意思
4. GitHub 上的摸鱼神器

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存