阿里巴巴加入 Eclipse 基金会,开源一站式 Java 应用诊断平台 -- Eclipse Jifa

简介: ### 前言 Java 作为一门主流的编程语言, 在业界拥有着丰富的工具帮助开发者排查与定位研发过程中遇到的各类疑难问题。早在多年前, 阿里巴巴就研发了一款 Java 应用的在线问题诊断平台 -- ZProfiler, 致力于帮助研发同学快速定位生产环境中频繁遇到的 Java 问题, 例如 OOM 异常。 在内部, ZProfiler 平台被研发同学广泛使用, 协助他们解决了大量的生产问题

前言

Java 作为一门主流的编程语言, 在业界拥有着丰富的工具帮助开发者排查与定位研发过程中遇到的各类疑难问题。早在多年前, 阿里巴巴就研发了一款 Java 应用的在线问题诊断平台 -- ZProfiler, 致力于帮助研发同学快速定位生产环境中频繁遇到的 Java 问题, 例如 OOM 异常。

在内部, ZProfiler 平台被研发同学广泛使用, 协助他们解决了大量的生产问题。 如今, 为了让这款产品能够帮助到更多的 Java 开发者, 同时让这个项目能够得到更好的发展, 我们决定将其开源。

在今年年初, 阿里巴巴正式加入了 Eclipse 基金会, 并在社区中建立了 Eclipse Jifa 项目, 目前项目处在孵化阶段。

项目介绍

作为 ZProfiler 的开源版本, Eclipse Jifa 使用 Vue 和 Vert.x 作为其主要的前后端开发框架, 是一个典型的 web 应用程序。

在架构设计上, 我们将 Eclipse Jifa 划分为 Master / Worker 两块模块, 其中 Worker 负责具体的任务分析工作, 而 Master 则充当管理的角色, 让整套系统具备一定的水平扩展能力。我们也会支持 Worker 单独部署的能力以适用于简单场景。

1.png

用户可以很方便地将 Eclipse Jifa 部署在自己的应用环境中, 通过 Eclise Jifa 提供的文件传输能力将相关文件上传到平台中, 并使用浏览器进行相关的问题分析工作。

2.png

目前 Eclipse Jifa 基于 Eclipse MAT 实现了一系列常用的 Heap Dump 的分析服务, 如:

  • 支配树分析

支配树是图论中的一个重要概念, 被应用与多个领域, 比如编译器中。而在内存分析中, 支配树可以用来说明回> 收关系, 举一个例子: 当对象 A 能够被 GC 回收时, 对象 B 也一定能被回收, 则可以得出对象 A 支配对象 B 的> 结论。
注意 A 和 B 不一定有直接的引用关系。
通过支配树视图, 在某些情况下可以快速定位到一些"热"对象, 比如用于缓存的一些数据结构等。

3.png

  • 类加载器视图

类加载器视图会列出应用当前使用到的所有类加载, 以及每个类加载器加载类的情况: 加载了哪些类, 这些类有多少实例等信息。通常用于排查 Metaspace 使用过多的问题,根据经验,当 Groovy 类加载器以及反射类加载器数量较多时,Metaspace 碎片化成会比较严重, 不过堆分析暂时没有办法给出具体的碎片数据, 但是用户可以通过数量来做一定的辅助分析。

4.png

  • OQL

OQL (Object Query Language) 是 Eclipse MAT 内置的对象查询语言, 用户可以通过它实现各类查询操作

5.png

结语

相信有许多技术公司在自己内部环境也需要这样一个平台, 来支撑研发同学的问题排查工作, 提高生产环境效率。在此之前, Netfix 向我们表达了对该项目的兴趣, 他们内部也曾做过类似的工作, 双方做了一次深入的项目分享, 目前也在 Eclipse Jifa 项目上进行一些合作尝试。我们欢迎广大开发者们参与到这个项目中来, 帮助这个项目顺利孵化。

最后, 我们会持续地将更丰富的特性加入到 Eclipse Jifa 中, 比如线程分析等线上环境必备的 Java 应用分析功能, 同时会在扩展性和维护性上做一系列优化工作, 方便用户进行快速定制。

更多内容 (如何使用、贡献等) 可以参考: https://github.com/eclipse/jifa

相关文章
|
6月前
|
Arthas 监控 Java
Java 诊断利器 Arthas使用
Java 诊断利器 Arthas使用
214 0
|
9天前
|
Java Android开发
Eclipse 创建 Java 项目
Eclipse 创建 Java 项目
27 4
|
8天前
|
Java Android开发
Eclipse 创建 Java 类
Eclipse 创建 Java 类
13 0
|
6月前
|
Java Android开发
在Eclipse环境下调试Java程序
在Eclipse环境下调试Java程序
81 1
|
2月前
|
算法 Oracle Java
Java字符串拼接技术演进及阿里巴巴的贡献
本文主要讲述了Java字符串拼接技术的演进历程,以及阿里巴巴贡献的最新实现 PR 20273。
131 11
|
2月前
|
安全 Java 关系型数据库
代码规范Java阿里巴巴
本文介绍了阿里巴巴的《Java开发手册》,这是一份业界公认的代码规范手册,涵盖编程规约、异常日志、单元测试、安全规约、MySQL数据库、工程结构、设计规约七个维度。手册通过强制、推荐、参考三大类规约,详细指导开发者编写高质量的Java代码。文中还提供了常见问题的正反例对比,如方法参数类型一致性、SimpleDateFormat线程安全等问题的解决方案。此外,还介绍了如何安装和使用阿里规范插件来提高编码效率。
594 9
|
2月前
|
算法 Oracle Java
Java字符串拼接技术演进及阿里巴巴的贡献
本文主要讲述了Java字符串拼接技术的演进历程,以及阿里巴巴贡献的最新实现 PR 20273。
|
3月前
|
机器学习/深度学习 人工智能 算法
探索人工智能在医疗诊断中的应用与挑战Java编程中的对象和类:基础与实践
【8月更文挑战第27天】随着人工智能(AI)技术的飞速发展,其在医疗领域的应用日益广泛。本文深入探讨了AI技术在医疗诊断中的具体应用案例,包括图像识别、疾病预测和药物研发等方面,并分析了当前面临的主要挑战,如数据隐私、算法偏见和法规限制等。文章旨在为读者提供一个全面的视角,理解AI在改善医疗服务质量方面的潜力及其局限性。
|
3月前
|
存储 Java 测试技术
阿里巴巴java开发手册
这篇文章是关于阿里巴巴Java开发手册的整理,内容包括编程规约、异常日志、单元测试、安全规约、MySQL数据库使用以及工程结构等方面的详细规范和建议,旨在帮助开发者编写更加规范、高效和安全的代码。
|
3月前
|
easyexcel Java 关系型数据库
阿里巴巴-EasyExcel 基于Java的简单、省内存的读写Excel
该文章主要介绍了在Java应用中如何使用EasyExcel技术完成对Excel文件的导入和导出操作,包括环境搭建、基本概念、快速入门、进阶操作和综合应用等内容,并提供了相关代码示例和注意事项。
 阿里巴巴-EasyExcel 基于Java的简单、省内存的读写Excel

推荐镜像

更多
下一篇
无影云桌面