Eclipse即发入门
我已经在QAInsights 频道上发布了多个有关性能工程系列的视频,这将帮助您开始对 Java 应用程序进行故障排除。在这篇博文中,我们将了解如何使用 Eclipse Jifa 来识别 Java 应用程序中的潜在性能瓶颈。让我们开始吧。
eclipse J IFA
Eclipse Jifa(Java 问题查找助手)是一个开源应用程序,用于对 Java 应用程序进行故障排除。 Jifa 的启动阶段早在 2020 年由阿里巴巴在 Eclipse 基金会下成立。来自 Netflix、阿里云和其他开发者的开发者正在为 Jifa 项目做出贡献。
Jifa 是一个可扩展的基于 Web 的应用程序,易于部署和维护。目前,它支持以下分析:Heap Dump、Thread Dump(企业特性)和GC Log。
Jifa的前端是Vue 2.0,后端是Eclipse Vert.x。 Jifa 的分析引擎由 Heap Dump 服务和 GC Log Analyzer 组成。
可扩展性可以通过以 Master-Worker 方式部署 Jifa 来实现,也称为 Map-Reduce 模式。大多数性能测试工具都使用这种技术为目标应用程序生成更多负载。
安装
您可以通过多种方式安装 Jifa。最简单的方法是使用以下命令运行 docker 容器。
docker run -p 8102:8102 jifadocker/jifa-worker:demo
Jifa 还支持 Kubernetes 和 Master-Worker 模式以实现可扩展性,或者您可以使用 Gradle 构建工件并进行部署。
对于个人使用,我建议使用 docker 模式。对于企业使用,请使用 Master-Worker 或 Kubernetes 模式作为企业功能。
Master-Worker部署
在开始之前,请确保您已安装nodejs、npm、Gradle 和JDK 11。
git clone https://github.com/eclipse/jifa
./gradlew buildJifa
cd jifa/deploy/default_pattern
./deploy_jifa.sh
发射127.0.0.1:8089

即发首页
如果您只想部署工作人员,请使用以下命令。
cd deploy
./deploy_worker.sh
发射127.0.0.1:8102。
在 Master-Worker 模式下,master节点将用户请求从客户端路由到工作人员,并按需安排新工作人员。
worker个节点执行分析。
Kubernetes
cd scripts/docker_images
./build_image.sh
cd ../..
cd deploy/k8s_pattern
./deploy.sh
发射localhost:8089

即发企业特色
在 Kubernetes 模式下,可以根据分析任务编排工作人员。要释放 pod,请单击release按钮。

释放工作者
堆转储分析
让我们将示例堆转储上传到 Jifa 并使用这些功能。有多种方法可以生成堆转储。在这个演示中,我将从 JMeter 上传一个堆转储。但是你可以上传任何你想要的堆转储。
启动 Jifa,点击 Heap Dump Analysis > Add Heap Dump file 上传文件。

上传堆转储
Jifa支持S3、OSS、URL、SCP或本地等多种来源上传文件。拖放堆转储文件(OpenJDK HPROF 格式)或单击 Upload 图标进行上传。

点击analyze开始。勾选 keep unreachable objects 并点击 Confirm。

分析
分析完成后,Jifa 将显示所有详细信息。

分析之剑
如果您熟悉 Eclipse MAT,分析的信息可能会很熟悉。 Jifa 在后台使用 Eclipse MAT 进行堆转储分析以检测内存泄漏以获得更好的性能。以下是 Jifa 中 Heap Dump Analysis 的功能。
- 
  
概述
 - 
  
泄漏嫌疑人
 - 
  
GC 根
 - 
  
支配树
 - 
  
类直方图
 - 
  
无法访问的对象
 - 
  
重复类
 - 
  
类加载器
 - 
  
直接字节缓冲区
 - 
  
系统属性
 - 
  
线程信息
 - 
  
欧日
 - 
  
其他功能
 
Jifa 具有an inspector面板,其中使用对象地址的搜索可以深入到相应的对象。 Inspector 面板可以在 Settings 下打开/关闭。

线程转储分析
进入 Jifa 主页并点击 Thread Dump Analysis 以上传示例线程 Dump。分析线程转储以查看输出。线程转储分析有助于识别线程锁、死锁等问题,以了解线程的状态等等。

线程转储分析
以下是线程转储分析中的功能。
- 
  
基本信息
 - 
  
线程概述
 - 
  
线程组概述
 - 
  
Java 监视器
 - 
  
堆栈跟踪
 - 
  
原始内容
 
GC日志分析
垃圾收集日志分析有助于优化 GC 设置、内存管理等。要生成 GC 日志,请将-verbose:gc -Xlog:gc*:file=./gc.log传递给 Java 9 或更高版本的 JVM 参数。这将在当前目录中生成一个 GC 日志。
上传 gc.log 到 Jifa 进行分析。
Jifa 支持以下 GC 日志分析:
- 
  
OpenJDK 8 和 11
 - 
  
串行 GC、并行 GC、CMS GC、G1 GC、ZGC
 

GC日志分析
概述选项卡包含问题和建议、元数据和关键绩效指标。
Graph 选项卡具有关于 GC 计数、暂停时间、堆等的可视化。

GC 图
GC Cause and Phase 显示有关 GC 活动(例如 Full GC、Young GC 等)和饼图。

GC 原因和阶段
GC Detail 选项卡有助于过滤 GC 事件、日志时间等。

GC 详细信息
结论
Jifa 是一个很好的工具,可以识别 Java 应用程序的潜在内存泄漏和线程问题。如果您没有能力安装 MAT、VisualVM 等基于 GUI 的工具,或者如果您没有高内存来处理大型转储文件,那么 Jifa 可以帮助您。 Jifa 支持多源上传转储/日志文件。 Jifa 用户界面直观且易于浏览。但是导航树结构很麻烦。
JIFA 中的 GC Log 分析提供了问题和建议。但是对于堆转储和线程转储,您需要戴上侦探帽来解决问题。
更多推荐
 

所有评论(0)