环境准备
- jmeter5.4.1。去官方下载即可:Apache JMeter - Download Apache JMeter
- jdk1.8
机器准备
系统 | ip | 角色 |
---|---|---|
window10 本地 | 192.168.18.1 | master |
centos7 | 192.168.18.139 | slave |
centos7 | 192.168.18.138 | slave |
说明:
- master机器放在window上,是方便在本地测试。你也可以部署在linux上,都是可以的
- master和slave使用的jmeter版本要一致
部署slave
修改 jmeter.properties (在bin目录下)配置文件
#设置端口,默认是1099,根据个人情况进行设置
#server_port=1099
# 把这个设置成true,禁用ssl。这个默认是false,被注释掉了,打开注释
server.rmi.ssl.disable=true
启动服务
# 进入bin目录下
./jmeter-server
# 如果启动报了这个错:An error occurred: Cannot start. localhost.localdomain is a loopback address。可以使用下面命令启动
./jmeter-server -Djava.rmi.server.hostname=192.168.18.138
image.png
启动成功后,可以看到endpoint信息。这个port: 33200每次启动都不一样。因为目前用不到这个port,所以可以暂时不改。
如果想使用固定的port,可以修改jmeter.properties
image.png
按照上面部署,把两个slave 都部署起来就行
部署master
同样是修改jmeter.properties配置
# Remote Hosts - comma delimited
remote_hosts=127.0.0.1,192.168.18.138:1029,192.168.18.139:1029
#remote_hosts=localhost:1099,localhost:2010
# 禁用ssl
server.rmi.ssl.disable=true
设置remote_hosts。
master节点,本身也可以做为服务,如果你想让master也做为服务,则master节点也需要去bin目录下执行
# 启动服务
./jmeter-server
这里我就不启动了。只用slave节点测试
测试验证
通过GUI的方式
image.png打开jmeter页面。run的时候选择一个节点,也可以start All。
这里我们选择192.168.18.138机器
image.png
去138机器上,看多了这两行日志
通过命令的形式启动
# linux上
/root/jmeter/bin/jmeter -n -t test.jmx -R 192.168.18.138:1029,192.168.18.139:1029 -l result.jtl
# window上
/root/jmeter/bin/jmeter.bat -n -t test.jmx -R 192.168.18.138:1029,192.168.18.139:1029 -l result.jtl
分布式集群的原理
JMeter分布式执行时,选择其中一台作为调度机(master),其他机器作为执行机(slave);master会在本地编辑好jmx压测脚本,执行时,master将jmx脚本发送至slave上,slaver执行时不需要启动jmeter,只需要把jmeter-sever.bat文件打开以非GUI形式执行;slave执行完毕后将结果回传给master,并由master进行结果的汇总;简单来说能达到的效果也就是:比如我在JMeter jmx脚本中设立的线程数是100,我在本地单机运行就会产生100次请求。如果我有1台master机器,2台slave机器,那么每次会向服务器发送的请求数总共就是100*3次。
执行期间,result.jtl里面的日志是实时更新的。
网友评论