Eclipse Jifa 概述
Eclipse Jifa 是一个用于排查 Java 应用程序问题的开源项目。与通常在客户端运行的解决方案不同,Jifa 提供了一个基于 Web 的可扩展解决方案,避免了本地内存和资源的挑战。目前,Jifa 支持堆转储分析(Heap Dump Analysis)和垃圾回收日志分析(GC Log Analysis),并提供目标堆概览、泄漏嫌疑、线程信息和 GC 根分析等功能。
技术架构
- 前端:使用 Vue 2.0 构建。
- 后端:使用 Vert.x 构建。
- 架构模式:采用主从模式(Master-Worker pattern),主节点(Master)负责将浏览器请求路由到工作节点(Workers),工作节点执行分析任务。根据负载情况,主节点可以调度额外的工作节点。
部署方式
Eclipse Jifa 提供多种部署方式:
- 单工作节点模式。
- 一个主节点和多个工作节点模式。
- Kubernetes 模式,使用 Kubernetes Java Client 根据资源使用情况动态创建额外的 Pod。
分析引擎
Jifa 的分析引擎目前包含两部分:
- 堆转储分析服务:基于 Eclipse Memory Analyzer (MAT)。
- 垃圾回收日志分析服务:支持 G1、Parallel GC、Serial GC、CMS 和 ZGC 等垃圾回收算法。目前支持 Java 8 和 11 的日志分析,Java 17 的支持正在开发中。
使用方式
- 在线演示环境:可以通过 jifa.dragonwell-jdk.io 进行体验。
Docker 镜像:可以通过 Docker 快速运行 Jifa:
docker run -p 8102:8102 jifadocker/jifa-worker:demo
启动后,访问
http://localhost:8102
即可进入 Jifa 的起始页面。
堆转储分析
添加堆转储文件:用户可以通过多种方式提供
.hprof
格式的堆转储文件,例如使用 JDK 提供的jcmd
命令生成堆转储:jcmd [pid] GC.heap_dump [location to store the hprof file]
- 分析结果:分析完成后,用户可以查看堆转储的概览,并通过不同的视图(如 Dominator Tree)进一步分析堆转储数据。
垃圾回收日志分析
添加垃圾回收日志文件:用户可以通过多种方式提供垃圾回收日志文件,例如使用以下命令生成日志:
java -Xlog:gc*=debug:file=[log file location] -jar [jar location]
- 分析结果:分析完成后,用户可以查看垃圾回收的概览,并通过不同的标签页(如 Graphs、GC Cause And Phase、GC Detail)获取更详细的信息。
社区贡献与未来发展
Eclipse Jifa 目前处于孵化阶段,已经发布了 0.1 版本。阿里巴巴云、Netflix 等开源社区成员正在积极贡献代码。项目团队正在努力将项目推进到成熟阶段。
相关资源
- 项目主页:Eclipse Jifa
- GitHub 仓库:eclipse/jifa
- 演示视频:jChampions Conference 2022
项目领导者
- Sanhong Li:Java Champion,GreenTea JUG 联合领导者,来自阿里巴巴云。
- Denghui Dong:OpenJDK 提交者,来自阿里巴巴云。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。