【第三方软件测评机构:Apache JMeter分布式负载测试过程】
Apache JMeter 分布式负载测试,通常被称为“主从模式”,是一种通过多台压力机协同工作,由一台控制机统一调度,共同向目标系统施加负载的测试方法。目的是突破单机性能瓶颈,模拟出足够高的并发用户数,以真实地评估系统的性能与承载能力。
名词解释:
控制机
运行 JMeter GUI,负责管理测试计划(.jmx 文件),并将其分发至所有压力机;协调测试启动、停止;接收并聚合来自各压力机的原始测试结果。无需极高性能,但需要稳定的网络连接以管理整个测试集群。
压力机
无头地执行控制机下发的测试计划,根据指令向被测系统发起真实请求,并将原始性能数据实时回传至控制机。需要具备较高的网络I/O和CPU处理能力。操作系统、Java版本应尽量保持一致,且必须与控制机网络互通。一台压力机可模拟的线程数受其硬件资源(CPU、内存、网络带宽)限制。
被测系统
待进行性能测试的应用程序、服务器或集群。压力机与SUT应处于同一网络区域,以减少网络延迟对测试结果的干扰。
分布式测试配置
第一步:环境准备与校验
网络连通性:确保控制机与所有压力机之间、所有压力机与被测系统之间的TCP/IP连接畅通。通常使用 ping 和 telnet <ip> <port> 命令验证。
防火墙设置:关闭压力机上的防火墙或开放相关端口。JMeter 分布式通信默认使用 1099 端口(RMI注册端口)和一个随机高位端口(用于实际数据传输),为避免问题,通常建议在防火墙中开放一个端口范围(如 1099-1110)。
Java与JMeter安装:在所有压力机和控制机上安装完全相同版本的 Java Development Kit (JDK) 和 Apache JMeter。将其解压至完全相同的绝对路径下可以避免许多潜在问题。
第二步:压力机配置
1.定位到 JMeter 的 bin 目录。
2.找到 jmeter.properties 文件。
3.编辑该文件,找到 remote_hosts 配置项。
4.将其值修改为控制机的IP地址和默认端口(例如:remote_hosts=192.168.1.101:1099)。注意:此步骤是在压力机上指定控制机的地址,而非列举所有压力机。
5.启动压力机上的 Agent 服务。在 bin 目录下执行脚本:
Windows: jmeter-server.bat
Linux/Unix: ./jmeter-server
6.启动成功后,命令行会显示:Started remote object ...
第三步:控制机配置
1.在控制机上编辑 jmeter.properties 文件。
2.找到 remote_hosts 配置项。
3.将其值修改为所有压力机的IP地址和端口,多个地址用逗号分隔(例如:remote_hosts=192.168.1.102:1099,192.168.1.103:1099,192.168.1.104:1099)。这是控制机识别整个集群的关键配置。
第四步:执行分布式测试
1.在控制机上打开 JMeter GUI,加载并完善测试计划(.jmx 文件)。
2.【强烈建议】 先在控制机上使用 localhost 进行单机测试,验证脚本逻辑正确无误(参数化、关联、断言等)。
3.脚本验证无误后,选择菜单栏中的 “运行” (Run) -> “远程启动” (Remote Start),然后选择要启动的单个压力机,或直接选择 “远程全部启动” (Remote Start All)。
4.控制机将自动把 .jmx 文件及依赖(如 CSV 数据文件)分发至各压力机。压力机接收到指令后开始执行测试,并将采样结果实时发送回控制机。
5.通过 JMeter 的监听器(如聚合报告)实时查看汇总的测试结果。
第五步:测试终止与结果收集
测试完成后,通过 “运行” -> “远程停止” (Remote Stop) 或 “远程全部停止” (Remote Stop All) 来终止测试。
控制机收集到的结果数据是各压力机数据的聚合。建议将结果保存为 CSV 格式(在“聚合报告”等监听器中配置),以便后续进行更详细的分析。