ASP源码.NET源码PHP源码JSP源码JAVA源码DELPHI源码PB源码VC源码VB源码Android源码

编写高性能 Java 代码的最佳实践(1/4)

来源:网络整理     时间:2018-08-14     关键词:

本篇文章主要介绍了" 编写高性能 Java 代码的最佳实践",主要涉及到方面的内容,对于Javajrs看球网直播吧_低调看直播体育app软件下载_低调看体育直播感兴趣的同学可以参考一下: 摘要:本文首先介绍了负载测试、基于APM工具的应用程序和服务器监控,随后介绍了编写高性能Java代码的一些最佳实践。最后研究了JVM特定的调优技巧、数据库端的优...

摘要:本文首先介绍了负载测试、基于APM工具的应用程序和服务器监控,随后介绍了编写高性能Java代码的一些最佳实践。最后研究了JVM特定的调优技巧、数据库端的优化和架构方面的调整。以下是译文。

介绍

在这篇文章中,我们将讨论几个有助于提升Java应用程序性能的方法。我们首先将介绍如何定义可度量的性能指标,然后看看有哪些工具可以用来度量和监控应用程序性能,以及确定性能瓶颈。

我们还将看到一些常见的Java代码优化方法以及最佳编码实践。最后,我们将看看用于提升Java应用程序性能的JVM调优技巧和架构调整。

请注意,性能优化是一个很宽泛的话题,而本文只是对JVM探索的一个起点。

性能指标

在开始优化应用程序的性能之前,我们需要理解诸如可扩展性、性能、可用性等方面的非功能需求。

以下是典型Web应用程序常用的一些性能指标:

  1. 应用程序平均响应时间
  2. 系统必须支持的平均并发用户数
  3. 在负载高峰期间,预期的每秒请求数

这些指标可以通过使用多种监视工具监测到,它们对分析性能瓶颈和性能调优有着非常大的作用。

示例应用程序

我们将使用一个简单的Spring Boot Web应用程序作为示例,在这篇文章中有相关的介绍。这个应用程序可用于管理员工列表,并对外公开了添加和检索员工的REST API

我们将使用这个程序作为参考来运行负载测试,并在接下来的章节中监控各种应用指标。

找出性能瓶颈

负载测试工具和应用程序性能管理(APM)解决方案常用于跟踪和优化Java应用程序的性能。要找出性能瓶颈,主要就是对各种应用场景进行负载测试,并同时使用APM工具对CPU、IO、堆的使用情况进行监控等等。

Gatling是进行负载测试最好的工具之一,它提供了对HTTP协议的支持,是HTTP服务器负载测试的绝佳选择。

Stackify的Retrace是一个成熟的APM解决方案。它的功能很丰富,对确定应用程序的性能基线很有帮助。 Retrace的关键组件之一是它的代码分析功能,它能够在不减慢应用程序的情况下收集运行时信息。

Retrace还提供了监视基于JVM应用程序的内存、线程和类的小部件。除了应用程序本身的指标之外,它还支持监视托管应用程序的服务器的CPU和IO使用情况。

因此,像Retrace这样功能全面的监控工具是解锁应用程序性能潜力的第一步。而第二步则是在你的系统上重现真实使用场景和负载。

说起来容易,做起来难,而且了解应用程序当前的性能也非常重要。这就是我们接下来要关注的问题。

Gatling负载测试

Gatling的模拟测试脚本是用Scala编写的,但该工具还附带了一个非常有用的图形界面,可用于记录具体的场景,并生成Scala脚本。

在运行模拟脚本之后,Gatling会生成一份非常有用的、可用于分析的HTML报告。

定义场景

在启动记录器之前,我们需要定义一个场景,表示用户在浏览Web应用时发生的事情。

在我们的这个例子中,具体的场景将是“启动200个用户,每个用户发出一万个请求。”

配置记录器

根据“Gatling的第一步”所述,用下面的代码创建一个名为EmployeeSimulation的scala文件:

class EmployeeSimulation extends Simulation {
    val scn = scenario("FetchEmployees").repeat(10000) {
        exec(
          http("GetEmployees-API")
            .get("http://localhost:8080/employees")
            .check(status.is(200))
        )
    }
    setUp(scn.users(200).ramp(100))
}

运行负载测试

要执行负载测试,请运行以下命令:

相关图片

相关文章