性能指标
在开始动手改进应用程序的性能之前,我们需要定义和理解非功能性需求的一些关键领域,比如可扩展性、性能、可用性,等等。
以下是一些用来衡量 Web 应用程序性能的常用指标:
平均应用响应时间;
系统支持的平均并发用户数;
在最大负载期间每秒支持的请求数。
借助不同的负载测试手段以及应用程序监测工具对这些指标进行量化,有助于找出性能瓶颈的关键点并对其进行相应的优化,从而提升 Java 程序性能。
示例程序
首先创建一个示例程序,下文将基于该示例程序探讨性能优化方法。我使用一个简单的 Spring Boot Web 应用程序用作本文示例程序(可参考#/spring-boot-level-up/)。该程序负责管理员工列表,通过暴露出 REST API 用来进行员工新增和检索。
在下文中我们将把它作为负载测试的参考,来监控多种性能指标。
找到性能瓶颈
负载测试工具和应用程序性能管理(APM)解决方案通常用于跟踪和优化 Java 应用程序的性能。围绕不同的应用场景运行负载测试,同时使用 APM 工具监控 CPU、IO、内存占用等情况是识别瓶颈的关键。
Gatling 是负载测试的最佳工具之一,它提供了对 HTTP 协议的极佳支持,这使得它成为对任何 HTTP 服务器进行负载测试的绝佳选择。
Stackify 的 Retrace 是一个非常成熟的 APM 解决方案,它具有非常丰富的功能,可以帮助你确定应用程序的基准。Retrace 的关键组件之一是其代码性能分析模块,它能够在不减缓应用程序的情况下收集运行时信息。
Retrace 还提供了其他组件,用于监控基于 JVM 运行的应用程序的内存、线程和类。除了应用程序指标之外,它还能够监控托管应用程序的服务器的 CPU 和 IO 使用情况。
因此,像 Retrace 这样全面的监控工具将解锁应用程序性能优化的第一部分。第二部分则需要对应用程序在真实世界的使用情况和负载进行重现来优化。
想要重现并不容易,并且了解应用程序的当前性能配置文件也非常重要。接下来我们将重点关注这个问题。
Gatling 负载测试
Gatling 模拟脚本采用 Scala 编写,它附带了一个功能强大的 GUI,提供场景记录功能。GUI 自动创建 Scala 脚本呈现模拟测试结果。模拟测试完成之后,Gatling 能够生成有用的、即时分析的 HTML 报告。
更多山东IT培训相关资讯,请扫描下方二维码