使用Eclipse Jifa排查Java应用程序问题

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 提供多种部署方式:

  1. 单工作节点模式。
  2. 一个主节点和多个工作节点模式。
  3. Kubernetes 模式,使用 Kubernetes Java Client 根据资源使用情况动态创建额外的 Pod。

分析引擎

Jifa 的分析引擎目前包含两部分:

  1. 堆转储分析服务:基于 Eclipse Memory Analyzer (MAT)。
  2. 垃圾回收日志分析服务:支持 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 的起始页面。

堆转储分析

  1. 添加堆转储文件:用户可以通过多种方式提供 .hprof 格式的堆转储文件,例如使用 JDK 提供的 jcmd 命令生成堆转储:

    jcmd [pid] GC.heap_dump [location to store the hprof file]
  2. 分析结果:分析完成后,用户可以查看堆转储的概览,并通过不同的视图(如 Dominator Tree)进一步分析堆转储数据。

垃圾回收日志分析

  1. 添加垃圾回收日志文件:用户可以通过多种方式提供垃圾回收日志文件,例如使用以下命令生成日志:

    java -Xlog:gc*=debug:file=[log file location] -jar [jar location]
  2. 分析结果:分析完成后,用户可以查看垃圾回收的概览,并通过不同的标签页(如 Graphs、GC Cause And Phase、GC Detail)获取更详细的信息。

社区贡献与未来发展

Eclipse Jifa 目前处于孵化阶段,已经发布了 0.1 版本。阿里巴巴云、Netflix 等开源社区成员正在积极贡献代码。项目团队正在努力将项目推进到成熟阶段。

相关资源

项目领导者

  • Sanhong Li:Java Champion,GreenTea JUG 联合领导者,来自阿里巴巴云。
  • Denghui Dong:OpenJDK 提交者,来自阿里巴巴云。
阅读 42
0 条评论