1. 概述

本文将深入探讨如何使用 JMeter 进行分布式性能测试

2. 什么是分布式性能测试?

分布式性能测试,是指通过多个系统采用主从(Master-Slave)架构,对 Web 应用或服务器进行压力测试。

在这个过程中,我们会在本地客户端上运行一个 Master 节点 来统一调度测试任务,而多个远程客户端作为 Slave 节点 实际执行负载请求。

⚠️ 每个 Slave 节点都会严格按照 Master 节点设定的条件执行负载测试。因此,这种模式可以让我们模拟出更高并发的用户访问量。

简单来说,JMeter 的分布式测试结构如下图所示:

jmeter distributed

3. 环境搭建

3.1. 准备工作

在开始配置之前,请确保满足以下前置条件:

  • 多台机器均已安装 JMeter
  • 所有系统的防火墙已关闭,或开放了必要的端口用于通信
  • 所有系统(Master 和 Slave)处于同一子网中
  • 所有系统都能正常访问目标服务器
  • 所有节点使用相同版本的 Java 和 JMeter
  • 为简化配置,建议关闭 RMI 的 SSL 加密

准备好这些后,我们就可以分别配置 Slave 和 Master 系统了。

3.2. 配置 Slave 节点

在每台 Slave 节点上,进入 jmeter/bin 目录,执行如下命令启动服务:

  • Windows 系统:

    jmeter-server.bat
    
  • Unix/Linux 系统:

    ./jmeter-server
    

✅ 启动成功后,Slave 节点会等待 Master 发送测试指令。

3.3. 配置 Master 节点

在 Master 节点上,同样进入 jmeter/bin 目录,编辑 jmeter.properties 文件中的 remote_hosts 属性,添加所有 Slave 节点的 IP 地址(逗号分隔):

remote_hosts=192.165.0.10,192.165.0.20,192.165.0.30

在这个例子中,我们添加了三个 Slave 节点。

启动 JMeter(Master)的 GUI 模式后,可以在菜单栏的 Run > Remote Start 中看到所有已配置的 Slave 节点:

jmeter slaves

至此,分布式测试环境已准备就绪!

4. 执行远程测试

虽然可以使用 GUI 模式进行调试,但实际压测建议使用 CLI 模式 以提升性能和稳定性。

首先,在 Master 节点上创建一个简单的测试计划,包含一个 HTTP Request 取样器(用于请求 baeldung.com),以及一个 View Results Tree 监听器。

4.1. 启动单个 Slave

在 GUI 模式下,可以通过 Run > Remote Start 菜单选择启动某个特定的 Slave 节点:

jmeter start slave

4.2. 启动所有 Slave

如果要启动所有 Slave 节点,选择 Run > Remote Start All 即可:

jmeter start all

此外,还支持如下操作:

  • Remote Stop:停止指定 Slave 的测试
  • Remote Stop All:停止所有 Slave 的测试
  • Remote Shutdown All:优雅关闭所有 Slave 的测试

4.3. 查看测试结果

测试执行完成后,可以在 Master 节点的 JMeter 界面中查看测试结果:

jmeter master results

同时,在 Slave 节点上可以看到测试启动和结束的日志信息:

Starting the test on host 192.165.0.10 @ Sun Oct 25 17:50:21 EET 2020
Finished the test on host 192.165.0.10 @ Sun Oct 25 17:50:25 EET 2020

5. 总结

在本教程中,我们了解了如何使用 JMeter 进行分布式性能测试。

✅ 从环境准备到主从配置,再到实际运行测试和查看结果,整个流程一气呵成。

⚠️ 实际项目中,建议使用 CLI 模式进行大规模压测,并注意版本一致性与网络配置,避免踩坑。

分布式测试是 JMeter 的一大亮点,合理使用可以极大提升测试效率和准确性。


原始标题:Distributed Performance Testing with JMeter