如何使用 JMeter 进行性能和负载测试
JMeter 负载测试
JMeter 负载测试是使用名为 Apache JMeter 的负载测试工具进行的一种测试过程,该工具是基于 Java 的开源桌面应用程序。JMeter 用于负载测试是一个关键工具,它决定了被测试的 Web 应用程序是否能满足高负载要求。它还有助于分析服务器在高负载下的整体情况。
JMeter 性能测试
JMeter 性能测试是使用 Apache JMeter 执行的一种测试方法,用于测试 Web 应用程序的性能。JMeter 性能测试有助于测试静态和动态资源,有助于发现网站上的并发用户,并为性能测试提供各种图形分析。JMeter 性能测试包括 Web 应用程序的负载测试和压力测试。
Apache JMeter 测试工具在性能测试中提供以下优点
- JMeter 可用于测试静态资源(如JavaScript和 HTML)以及动态资源(如 JSP、Servlets 和 AJAX)的性能。
- JMeter 可以发现您的网站可以处理的最大并发用户数
- JMeter 提供各种性能报告的图形分析。
JMeter 性能测试包括
- 负载测试:通过模拟多个用户同时访问Web 服务来建模预期使用情况。
- 压力测试:每个 Web 服务器都有最大负载容量。当负载超出限制时,Web 服务器开始响应缓慢并产生错误。压力测试的目的是找出 Web 服务器可以处理的最大负载。
下图显示了 JMeter 负载测试如何模拟高负载
在 JMeter 中创建性能测试计划
在本教程中,我们将使用各种性能测试工具对 1000 名用户的 Google.com 进行性能分析,以确保网站能够处理负载并提供无缝的用户体验。
在测试目标 Web 应用程序的性能之前,我们应该确定:
- 正常负载:访问您网站的平均用户数
- 高负载:访问您网站的最大用户数
- 您在此测试中的目标是什么?
这是此实际示例的路线图
步骤 1) 添加线程组
- 启动 JMeter
- 在树上选择测试计划
- 添加线程组
右键单击“测试计划”并添加一个新的线程组:添加 -> 线程(用户) -> 线程组
在线程组控制面板中,按如下方式输入线程属性
- 线程数:100(连接到目标网站的用户数:100)
- 循环计数:10(执行测试的次数)
- 启动时间: 100
线程计数和循环计数是不同的。
启动时间告诉 JMeter 在启动下一个用户之前延迟多长时间。例如,如果我们有 100 个用户和 100 秒的启动时间,那么启动用户之间的延迟将是 1 秒(100 秒 / 100 个用户)
步骤 2) 添加 JMeter 元素
现在我们确定此测试中的 JMeter 元素。元素包括
-
HTTP 请求默认值
可以通过右键单击线程组并选择:添加 -> 配置元素 -> HTTP 请求默认值来添加此元素。
在 HTTP 请求默认值控制面板中,输入被测试的网站名称(http://www.google.com)
-
HTTP 请求
右键单击线程组并选择:添加 -> 采样器 -> HTTP 请求。
在 HTTP 请求控制面板中,“路径”字段指示您要发送到 Google 服务器的URL 请求。
例如,如果您在“路径”字段中输入“calendar”。JMeter 将向 Google 服务器创建 URL 请求http://www.google.com/calendar
如果将“路径”字段留作空白,JMeter 将向 Google 服务器创建 URL 请求http://www.google.com。
在此测试中,将“路径”字段留作空白,以使 JMeter 向 Google 服务器创建 URL 请求 http://www.google.com。
步骤 3) 添加图表结果
JMeter 可以以图表格式显示测试结果。
右键单击测试计划,添加 -> 监听器 -> 图表结果
步骤 4) 运行测试并获取测试结果
按下工具栏上的运行按钮 (Ctrl + R) 以启动软件测试过程。您将实时看到图表上显示的测试结果。
下图显示了一个测试计划的图表,我们模拟了 100 个用户访问网站www.google.com。
图片底部有以下统计数据,以颜色表示
- 黑色:发送的当前样本总数。
- 蓝色:所有发送样本的当前平均值。
- 红色:当前标准差。
- 绿色:吞吐量,表示服务器每分钟处理的请求数。
我们来分析下图中的 Google 服务器性能。
要分析被测试 Web 服务器的性能,您应该关注 2 个参数
- 吞吐量
- 偏差
吞吐量是最重要的参数。它表示服务器处理高负载的能力。吞吐量越高,服务器性能越好。
在此测试中,Google 服务器的吞吐量为 1,491.193/分钟。这意味着 Google 服务器每分钟可以处理 1,491.193 个请求。该值相当高,因此我们可以得出结论,Google 服务器性能良好。
偏差以红色显示——它表示与平均值的偏差。越小越好。
我们来比较 Google 服务器与其他 Web 服务器的性能。这是网站http://www.yahoo.com/的性能测试结果(您可以选择其他网站)
被测试网站http://www.yahoo.com的吞吐量为 867.326/分钟。这意味着该服务器每分钟处理 867.326 个请求,低于 Google。
偏差为 2689,远高于 Google(577)。因此我们可以确定该网站的性能低于 Google 服务器。
注意:以上值取决于多个因素,如 Google 当前的服务器负载、您的互联网速度、您的 CPU 功率等。因此,您不太可能获得与上述相同的结果。所以不要惊慌!如果您对了解服务器负载如何影响性能以及如何测试它感兴趣,您可能会发现此负载测试教程有用。
故障排除
如果您在运行上述场景时遇到问题,请执行以下操作
- 检查您是否通过代理连接到互联网。如果是,请移除代理。
- 打开一个新的 Jmeter 实例
- 在 Jmeter 中打开PerformanceTestPlan.jmx
- 双击线程组 -> 图形结果
- 运行测试