应用性能分析(5 个Java 性能分析技巧,可帮助调整 JVM)

Posted

篇首语:鸟欲高飞先振翅,人求上进先读书。本文由小常识网(cha138.com)小编为大家整理,主要介绍了应用性能分析(5 个Java 性能分析技巧,可帮助调整 JVM)相关的知识,希望对你有一定的参考价值。

应用性能分析(5 个Java 性能分析技巧,可帮助调整 JVM)

优化 JVM 吞吐量和避免运行时瓶颈的最佳方法是将 Java 性能分析作为团队持续开发和部署 (CI/CD) 策略的关键部分。以下是五个 Java 性能分析技巧和最佳实践,可帮助你充分利用本地硬件和云托管运行时环境。

1. 远不要关闭Java性能分析


Java Flight Recorder 是一个非常高效的 Java 性能分析工具,直接内置在 JVM 中。它是轻量级的,对正在运行的应用程序的影响最小。

默认设置对性能的影响不到 1%,而即使是最极端的数据收集设置,其消耗也仅略高于 2%。鉴于任何生产服务器都不应该在任何延长的时间内承受 50% 的负载这一事实,应该始终有足够的可用资源来保持 Java Flight Recorder 在后台运行。

这种配置的好处是,当发生 JVM 崩溃或应用程序遇到灾难性的运行时故障时,可以查看导致灾难的所有事件的记录。即使在负载较重的生产系统上,Java 性能分析器也应该始终运行。事实上,当 JVM 处于极端负载下时,正是从 Java 性能分析工具获取的指标最有用的时候。

2. 知道何时选择采样而不是仪器


有两种不同的方法来监视和分析 JVM:采样和检测。

使用采样方法的 Java 性能分析器将在运行时对 JVM 施加更可预测的负载。因此,在 JVM 的字节码调用中搜索模式时,最好使用基于采样的分析器。

仪器分析仪更精确,并且在其应用中更具外科手术性。借助仪器,软件架构师可以将额外的代码或组件添加到系统中。他们将这些工具添加到他们认为可能是性能问题来源的位置。因为仪器被插入到应用程序代码中或嵌入在 JVM 中,所以每次遇到时都会触发它们。


当你很好地了解问题是什么以及问题在代码库中的位置时,基于检测的分析器往往会更有效。战略性地使用采样和基于检测的分析器将带来最佳的 Java 性能优化结果。

3. 使用 AI 增强 JVM 性能问题分析


无论是内存泄漏还是线程死锁,大多数 Java 性能问题都遵循众所周知的行为模式。在花费大量时间检查 JVM 堆直方图或检查 Java GC 暂停时间之前,请通过可以将某种程度的 AI 应用于文件的分析工具运行 Java 性能分析器数据。

大多数 Java 性能分析工具将能够快速对困扰你的应用程序的瓶颈类型进行分类,甚至可以识别出降低吞吐量和延迟的实际代码行。

4. 在版本控制中保持性能基准


性能数据历史将帮助你识别 Java 性能指标中的模式。

为你的应用程序创建一个性能测试套件,将其作为每个持续集成构建的一部分运行,并确保你在后台打开了 Java Flight Recorder。然后将生成的 Flight Recorder 数据文件作为 CI/CD 构建的一部分保存在 Git GitHub 中。

这种 Java 性能分析策略不仅为你的应用程序创建了一个性能基准,而且还为你提供了一个历史记录,你可以在其中查看趋势如何随着时间的推移而出现。你可能无法从一个 sprint 到下一个 sprint 中识别出一个迫在眉睫的性能问题,但是在一系列几周或几个月内比较 JVM 分析器数据将有助于发掘模式。

此外,告诉开发人员,如果性能指标超出可接受的范围,那么它被认为是一个损坏的构建。让开发人员在开发生命周期的早期考虑非功能性需求,例如性能和安全性。


5. 现代化你的 Java 分析工具


当谈到 Java 性能分析工具时,不要拘泥于自己的方式。

10 年前可能对部署到 WebSphere Tomcat 服务器的应用程序进行故障排除有效的工具在对部署到 Docker 容器的基于微服务的应用程序进行故障排除方面将不那么有效。在过去的 10 年中,应用程序开发、设计和部署的世界发生了巨大变化,你使用的 Java 性能分析工具也需要随之改变。

VisualVM 仍然是一种流行的 Java 性能分析和监控工具,但 Java Mission Control 等新的分析工具提供了可视化和检查 JVM 指标的更新方法。当字节码封装在 Docker 容器中并部署到 Kubernetes 集群时,许多供应商专门分析 JVM 运行时。始终确保你使用的分析工具符合你的 Java 性能分析需求。

坚持这些 Java 性能分析技巧,并在即将出现的可能会降低应用程序吞吐量的 JVM 瓶颈之前保持领先一步。


了解更多

相关参考

怎样用java建立自己的网站平台(Java开发者必备的9个网站)

Java是一种面向对象的编程语言,应用于各种各样的技术领域,例如网站开发、Android开发、游戏开发、大数据等等。作为Java开发者,每一个项目的要求不同,遇到的问题也会不同,面对源源不断的问题,怎么破?不要着急,这9...

温度指示调节仪接线图(小菲课堂|FLIR分析与报告软件使用指南(上))

FLIRThermalStudio套件是目前菲力尔最先进的工业应用测温方向红外图像分析和报告软件,它可管理数以千计的红外图像和红外视频,其专为使用手持式热像仪、无人机系统(UAS)、光学气体成像(OGI)热像仪的热像师而设计,可提供先进...

温度指示调节仪接线图(小菲课堂|FLIR分析与报告软件使用指南(上))

FLIRThermalStudio套件是目前菲力尔最先进的工业应用测温方向红外图像分析和报告软件,它可管理数以千计的红外图像和红外视频,其专为使用手持式热像仪、无人机系统(UAS)、光学气体成像(OGI)热像仪的热像师而设计,可提供先进...

java和python哪个应用领域广

...来说,Python相对于Java来说比较好学一些,跟直观一些;就应用范围来说,Java的应用较广泛,毕竟比Python发现的更

数据采集的方式(读Java实战(第二版)笔记04_用流收集数据)

读Java实战(第二版)笔记04_用流收集数据1.方便程序员和可读性是头等大事!1.1.函数式API设计更易复合和重用2.归约和汇总为一个值2.1.counting()2.1.1.计数2.2.maxBy2.2.1.查找流中的最大值2.3.minBy2.3.1.查找流中的最小值2.4.summingInt2.4.1....

环氧修补砂浆和环氧树脂砂浆(科普丨水性环氧树脂特点,类型及应用)

...能,耐化学品性能和耐热稳定性等;4、水性环氧树脂在应用过程中,可任意比加水稀释,调整粘度,不影响稀释效果,施工时易于清洗;4、水性环氧树脂可在室温下及潮湿带水环境中交联固化;5、对水

环氧修补砂浆和环氧树脂砂浆(科普丨水性环氧树脂特点,类型及应用)

...能,耐化学品性能和耐热稳定性等;4、水性环氧树脂在应用过程中,可任意比加水稀释,调整粘度,不影响稀释效果,施工时易于清洗;4、水性环氧树脂可在室温下及潮湿带水环境中交联固化;5、对水

环氧修补砂浆和环氧树脂砂浆(科普丨水性环氧树脂特点,类型及应用)

...能,耐化学品性能和耐热稳定性等;4、水性环氧树脂在应用过程中,可任意比加水稀释,调整粘度,不影响稀释效果,施工时易于清洗;4、水性环氧树脂可在室温下及潮湿带水环境中交联固化;5、对水

弹性手感树脂(高性能3D打印材料?硬、柔、弹、可铸造)

...们的材料打印出满意的产品,看到3D打印技术又有了新的应用方向,感觉一切都是值得的。1.RaysinLZ柔性聚氨酯树脂具有较低的表面硬度,可弯

热粘强度和热封强度(POF收缩膜性能要求)

...膜的加工制造方法与一般薄膜不同,且其加热收缩的包装应用方式也相当特殊。因此对薄膜本身有极高的性能要求。Ÿ低收缩温度:以利最终用户提高包装速度,降低包装成本。Ÿ较宽的收缩温度工作区间:提高薄膜适机性,让...