Azure虚拟机上Apache JMeter主从分布式测试环境搭建指南
Azure 环境下 Apache JMeter 分布式测试搭建指南
一、核心搭建流程
1. 统一主从节点环境
- Java 版本检查与安装:登录所有Azure主/从VM,执行
java -version确认是否有同版本Java。JMeter要求主从所有节点必须使用完全一致的Java和JMeter版本,这是避免兼容性问题的核心前提。- 若未安装,下载对应版本JDK(推荐OpenJDK,与JMeter兼容性好),在所有节点安装到相同路径,配置
JAVA_HOME环境变量指向JDK根目录,并将%JAVA_HOME%\bin添加到系统Path中。
- 若未安装,下载对应版本JDK(推荐OpenJDK,与JMeter兼容性好),在所有节点安装到相同路径,配置
- JMeter 部署:下载与主节点版本一致的JMeter压缩包,解压到所有主从VM的相同路径(如
C:\JMeter),避免路径差异引发问题。
2. RMI 密钥配置(Windows 环境)
- 在主VM的JMeter bin目录执行命令生成密钥库:
按提示输入统一密码(建议用keytool -genkeypair -alias rmi -keyalg RSA -storetype PKCS12 -keystore rmi_keystore.jks -validity 730 -keysize 2048changeit简化后续配置),其余信息可直接回车跳过。 - 将生成的
rmi_keystore.jks复制到所有从VM的JMeter bin目录。 - 修改所有节点的
jmeter.properties文件(bin目录下):- 找到
remote_hosts,设置为从VM的IP/主机名,多节点用逗号分隔,例:remote_hosts=10.0.0.5,10.0.0.6 - 设
server.rmi.ssl.disable=false - 设
server.rmi.keystore.file=rmi_keystore.jks - 设
server.rmi.keystore.password和server.rmi.key.password为你设置的密码(如changeit)
- 找到
3. Azure 网络与防火墙配置
- VM 本地防火墙:在所有主从VM的Windows防火墙中,添加允许JMeter程序入站/出站的规则,或直接开放默认RMI端口1099(也可在
jmeter.properties中固定server.rmi.localport和client.rmi.localport)。 - Azure 网络安全组(NSG):在Azure门户中,为主从VM所在NSG添加入站规则,允许主VM访问从VM的1099端口,以及从机之间的必要通信。
4. 启动节点服务
- 在所有从VM的JMeter bin目录执行
jmeter-server.bat,启动成功会显示RemoteEngine ready类提示。 - 主VM直接打开JMeter GUI即可控制测试。
针对你的疑问的逐一解答
1. 搭建应从何开始?Azure虚拟机是否已安装同版本Java?若需自行安装,该如何操作?
- 第一步优先统一所有节点的Java和JMeter版本:
- Azure Windows VM默认不会预装适配JMeter的Java版本,需自行安装。
- 安装流程:下载对应版本JDK,在所有节点安装到相同路径,配置
JAVA_HOME环境变量,确保所有节点Java版本(含小版本号)完全一致。
2. 在本地创建的JMeter测试计划是否需要复制到所有主从服务器?
- 不需要复制到从机,主机会通过RMI将测试计划发送到指定从机执行。但如果测试计划用到自定义插件,必须将插件jar包复制到所有主从节点的
lib/ext目录,否则从机执行会报错。
3. 测试数据文件路径在各服务器不同,是否必须将其粘贴到bin目录(会导致多文件上传),或有其他从主服务器访问测试数据的方法?
- 无需都放到bin目录,推荐以下高效方案:
- Azure共享存储:创建Azure Files共享存储,挂载到所有主从VM的同一盘符/路径,测试计划直接用该共享路径读取数据,仅需上传一次文件到共享存储。
- 参数化路径:在测试计划中用用户定义变量(如
${DATA_PATH})指定数据路径,然后在每个从机的user.properties文件中配置该变量对应的本地路径,例:DATA_PATH=C:\testdata\data.csv。 - 主机关联发送:若数据文件较小,可在
CSV Data Set Config中勾选Share mode为All threads,主机会自动将文件发送到从机,此方法仅适合小文件。
4. 在JMeter GUI中选择仅在1台从机运行,测试会仅在该从机执行还是同时在主机执行?
- 只会在你选择的那台从机执行,主机默认仅负责发送测试指令、收集汇总结果,不参与执行。
5. 若想让主机也参与执行,需确保哪些配置项或关键更改?
- 需完成两个核心配置:
- 在主机的
jmeter.properties中设置固定server.rmi.localport(如1099),然后在主机bin目录执行jmeter-server.bat启动服务。 - 修改
remote_hosts配置,将主机自身IP或localhost加入列表,例:remote_hosts=localhost,10.0.0.5。 - 执行测试时,选择
Run -> Remote Start -> localhost(对应主机条目),主机即可与从机一同执行测试。
- 在主机的
内容的提问来源于stack exchange,提问作者Farhan Meer
相关产品推荐
相关产品推荐

