JMeter分布式环境搭建
- 控制机(controller):负责测试脚本的分发、启动、停止、收集负载机的测试结果。
- 负载机(worker nodes):负责接收控制机的指令,向被测服务器发送并发请求。
在实际运行过程中,控制器运行bin/jmeter.sh
,执行器运行bin/jmeter-server.sh
。(windows系统分别执行jmeter.bat
和jmeter-server.sh
)
环境
- 所有主机(控制机和负载机)都在同一网段。
- 所有主机开启时间同步。
- 所有主机上使用相同版本的
JMeter
和JDK
,混合版本可能无法正常工作。 - 所有负载机能正常访问被测应用。
配置
本例中,负载机使用Centos7
,控制机使用Windows 10
。
配置环境变量
vim /etc/profile
export JMETER_HOME=/usr/apache-jmeter-5.4.1
export CLASSPATH=${JMETER_HOME}/lib/ext/ApacheJMeter_core.jar:${JMETER_HOME}/lib/jorphan.jar:${JMETER_HOME}/lib/logkit-2.0.jar:${CLASSPATH}
export PATH=${JMETER_HOME}/bin/:${PATH}
source /etc/prifle
RMI
的SSL
设置
如果配置SSL
,需要配置相关证书,本例中直接关闭SSL
模式。
配置范围:所有主机
vim bin/user.properties
# 关闭rmi的ssl
server.rmi.ssl.disable=true
指定RMI
端口
默认RMI
会随机开放一个端口,如果有防火墙就没法制定规则。
配置范围:负载机
vim bin/jmeter.properties
server.rmi.localport=2099
firewall-cmd --zone=public --add-port=1099/tcp --permanent
firewall-cmd --zone=public --add-port=2099/tcp --permanent
firewall-cmd --reload
配置负载机
指定负载机的IP
vim bin/jmeter-server
RMI_HOST_DEF=-Djava.rmi.server.hostname=当前负载机的IP
配置控制机
将负载机的IP和端口写入控制机的配置文件,多个用逗号分隔。
vim bin/jmeter.properties
remote_hosts=192.168.1.20:1099,192.168.1.21:1099,192.168.1.22:1099
运行
- 负载机启动
jmeter-server
。 - 控制机启动
jmeter.bat
,配置任务后,在图形界面上依次点击Run -- Remote Start All
。
- 负载机日志:
bin/jmeter-server.log
- 控制机日志:
bin/jmeter.log
注意事项
- 分布式测试总样本数 = 线程数 x 循环次数 x 负载机数量
- 控制机如果有多个网卡(包括虚拟网卡),建议只保留与负载机同网段的网卡。
- 当脚本有依赖文件时,必须要拷贝到负载机相同目录下。
- 在2-3GHz的CPU上运行的单个
JMeter
客户端可以处理1000-2000个线程,具体取决于测试的类型。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。