如何使用 JMeter 进行性能和负载测试

JMeter 负载测试

JMeter 负载测试是使用名为 Apache JMeter 的负载测试工具进行的一种测试过程,该工具是基于 Java 的开源桌面应用程序。JMeter 用于负载测试是一个关键工具,它决定了被测试的 Web 应用程序是否能满足高负载要求。它还有助于分析服务器在高负载下的整体情况。

JMeter 性能测试

JMeter 性能测试是使用 Apache JMeter 执行的一种测试方法,用于测试 Web 应用程序的性能。JMeter 性能测试有助于测试静态和动态资源,有助于发现网站上的并发用户,并为性能测试提供各种图形分析。JMeter 性能测试包括 Web 应用程序的负载测试和压力测试。

JMeter Performance Testing

Apache JMeter 测试工具在性能测试中提供以下优点

  • JMeter 可用于测试静态资源(如JavaScript和 HTML)以及动态资源(如 JSP、Servlets 和 AJAX)的性能。
  • JMeter 可以发现您的网站可以处理的最大并发用户数
  • JMeter 提供各种性能报告的图形分析。

JMeter 性能测试包括

JMeter Performance Testing

  • 负载测试:通过模拟多个用户同时访问Web 服务来建模预期使用情况。
  • 压力测试:每个 Web 服务器都有最大负载容量。当负载超出限制时,Web 服务器开始响应缓慢并产生错误。压力测试的目的是找出 Web 服务器可以处理的最大负载。

下图显示了 JMeter 负载测试如何模拟高负载

JMeter Performance Testing

在 JMeter 中创建性能测试计划

在本教程中,我们将使用各种性能测试工具对 1000 名用户的 Google.com 进行性能分析,以确保网站能够处理负载并提供无缝的用户体验。

在测试目标 Web 应用程序的性能之前,我们应该确定:

  • 正常负载:访问您网站的平均用户数
  • 高负载:访问您网站的最大用户数
  • 您在此测试中的目标是什么?

这是此实际示例的路线图

Create a Performance Test Plan in JMeter

步骤 1) 添加线程组

  1. 启动 JMeter
  2. 在树上选择测试计划
  3. 添加线程组

右键单击“测试计划”并添加一个新的线程组:添加 -> 线程(用户) -> 线程组

Add Thread Group

在线程组控制面板中,按如下方式输入线程属性

Add Thread Group

  • 线程数:100(连接到目标网站的用户数:100)
  • 循环计数:10(执行测试的次数)
  • 启动时间: 100

线程计数和循环计数是不同的。

Add Thread Group

启动时间告诉 JMeter 在启动下一个用户之前延迟多长时间。例如,如果我们有 100 个用户和 100 秒的启动时间,那么启动用户之间的延迟将是 1 秒(100 秒 / 100 个用户)

Add Thread Group

步骤 2) 添加 JMeter 元素

现在我们确定此测试中的 JMeter 元素。元素包括

  • HTTP 请求默认值

可以通过右键单击线程组并选择:添加 -> 配置元素 -> HTTP 请求默认值来添加此元素。

Adding JMeter Elements

在 HTTP 请求默认值控制面板中,输入被测试的网站名称(http://www.google.com

Adding JMeter Elements

  • HTTP 请求

右键单击线程组并选择:添加 -> 采样器 -> HTTP 请求

HTTP Request

在 HTTP 请求控制面板中,“路径”字段指示您要发送到 Google 服务器的URL 请求

HTTP Request

例如,如果您在“路径”字段中输入“calendar”。JMeter 将向 Google 服务器创建 URL 请求http://www.google.com/calendar

HTTP Request

如果将“路径”字段留作空白,JMeter 将向 Google 服务器创建 URL 请求http://www.google.com

在此测试中,将“路径”字段留作空白,以使 JMeter 向 Google 服务器创建 URL 请求 http://www.google.com

步骤 3) 添加图表结果

JMeter 可以以图表格式显示测试结果。

右键单击测试计划,添加 -> 监听器 -> 图表结果

Adding Graph Result

步骤 4) 运行测试并获取测试结果

按下工具栏上的运行按钮 (Ctrl + R) 以启动软件测试过程。您将实时看到图表上显示的测试结果。

下图显示了一个测试计划的图表,我们模拟了 100 个用户访问网站www.google.com

Run Test and get the Test Result

图片底部有以下统计数据,以颜色表示

  • 黑色:发送的当前样本总数。
  • 蓝色:所有发送样本的当前平均值。
  • 红色:当前标准差。
  • 绿色:吞吐量,表示服务器每分钟处理的请求数。

我们来分析下图中的 Google 服务器性能。

Run Test and get the Test Result

要分析被测试 Web 服务器的性能,您应该关注 2 个参数

  • 吞吐量
  • 偏差

吞吐量是最重要的参数。它表示服务器处理高负载的能力。吞吐量越高,服务器性能越好

在此测试中,Google 服务器的吞吐量为 1,491.193/分钟。这意味着 Google 服务器每分钟可以处理 1,491.193 个请求。该值相当高,因此我们可以得出结论,Google 服务器性能良好。

偏差以红色显示——它表示与平均值的偏差。越小越好

我们来比较 Google 服务器与其他 Web 服务器的性能。这是网站http://www.yahoo.com/的性能测试结果(您可以选择其他网站)

Run Test and get the Test Result

被测试网站http://www.yahoo.com的吞吐量为 867.326/分钟。这意味着该服务器每分钟处理 867.326 个请求,低于 Google。

偏差为 2689,远高于 Google(577)。因此我们可以确定该网站的性能低于 Google 服务器。

注意:以上值取决于多个因素,如 Google 当前的服务器负载、您的互联网速度、您的 CPU 功率等。因此,您不太可能获得与上述相同的结果。所以不要惊慌!如果您对了解服务器负载如何影响性能以及如何测试它感兴趣,您可能会发现此负载测试教程有用。

故障排除

如果您在运行上述场景时遇到问题,请执行以下操作

  1. 检查您是否通过代理连接到互联网。如果是,请移除代理。
  2. 打开一个新的 Jmeter 实例
  3. 在 Jmeter 中打开PerformanceTestPlan.jmx
  4. 双击线程组 -> 图形结果
  5. 运行测试