1. 概述
本文将深入探讨如何使用 JMeter 进行分布式性能测试。
2. 什么是分布式性能测试?
✅ 分布式性能测试,是指通过多个系统采用主从(Master-Slave)架构,对 Web 应用或服务器进行压力测试。
在这个过程中,我们会在本地客户端上运行一个 Master 节点 来统一调度测试任务,而多个远程客户端作为 Slave 节点 实际执行负载请求。
⚠️ 每个 Slave 节点都会严格按照 Master 节点设定的条件执行负载测试。因此,这种模式可以让我们模拟出更高并发的用户访问量。
简单来说,JMeter 的分布式测试结构如下图所示:
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 节点:
至此,分布式测试环境已准备就绪!
4. 执行远程测试
虽然可以使用 GUI 模式进行调试,但实际压测建议使用 CLI 模式 以提升性能和稳定性。
首先,在 Master 节点上创建一个简单的测试计划,包含一个 HTTP Request 取样器(用于请求 baeldung.com
),以及一个 View Results Tree 监听器。
4.1. 启动单个 Slave
在 GUI 模式下,可以通过 Run > Remote Start
菜单选择启动某个特定的 Slave 节点:
4.2. 启动所有 Slave
如果要启动所有 Slave 节点,选择 Run > Remote Start All
即可:
此外,还支持如下操作:
Remote Stop
:停止指定 Slave 的测试Remote Stop All
:停止所有 Slave 的测试Remote Shutdown All
:优雅关闭所有 Slave 的测试
4.3. 查看测试结果
测试执行完成后,可以在 Master 节点的 JMeter 界面中查看测试结果:
同时,在 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 的一大亮点,合理使用可以极大提升测试效率和准确性。