我的分布式配置如下:
- master是我的mac电脑:使用GUI模式做调度机,也可以使用no-gui模式。
- slave有两台是另个服务器,这里虽然master(调度机)也可以作为slave(执行机),但是不建议这么做。
-
三台机器都要有Jmeter,且版本要一致,否则可能出现脚本在不太版本运行报错的问题。
一、Jmeter分布式执行原理:
- Jmeter分布式测试时,选择其中一台作为调度机(master),其它机器做为执行机(slave)。
- 执行时,master会把脚本发送到每台slave上,slave 拿到脚本后就开始执行,slave执行时不需要启动GUI,我理解它应该是通过命令行模式执行的。
- 执行完成后,slave会把结果回传给master,master会收集所有slave的信息并汇总。
二、执行机(slave)配置:
- slave机上需要安装Jmeter,具体如何安装这里不详细介绍了。
- 添加环境变量:
-
启动bin目录下的jmeter-server(windows上输入jmeter-server.bat ;mac和linux系统上输入./jmeter-server(或者sh jmeter-server),linux上关闭窗口或者Ctrl+C会导致进程关闭,可以通过nohup ./jmeter-server.sh 来运行。)
- IP就是slave机器IP,端口默认是1099,这里我自定义为5029,端口的自定义后面会讲。
- 多台slave的话,重复1~4步骤就好。
三、调度机(master)配置:
-
进入bin目录,修改jmeter.properties文件中remote_hosts=XXX:5029,XXX:5029,....
多个slave用英文格式逗号隔开(ps: vi模式下shift+g调至至最后一行,更多操作可以百度)。
- 配置好后,在GUI模式下就可以看到我们第一张图片上的配置了。
- slave可以选择全部启动,也可以选择启动某个,或者某几个(在no-gui下可操作)。
四、自定义端口
-
slave机的Jmeter的bin目录下,找到jmeter.properties文件,修改如下两个配置项,比如我这里修改为5029,(这里自定义,但不要与服务器已经开启的端口冲突):
- slave机的端口改动了,需要在master上的jmeter.properties进行修改。