分布式使用背景
- 一台机器一个jmeter最多能处理http协议为2000以内,如果服务器的性能越好,jmeter能产生的并发数就越少
- 实际项目中,有些接口并发用户数可能会超过2000,即超过1个jmeter能产生的并发用户数,这时,就需要堆机器来产生更多的并发用户数
分布式概念
分布式—一个管理者,多个执行者。管理者和执行者,可以在不同的机器上
管理者:发送指令给 执行者,告诉执行者执行的脚本和执行时间,执行者就按照这个指令,像被测服务器发送请求,请求的时间。执行者执行完成后将结果返回给管理者
执行者本地可以没有脚本
管理者工作:只需要管理、维护、修改变更即可。如果管理者将线程数变了,每个执行者都会按照新的线程数产生并发用户数
助攻机:只是提供网络、内存、cpu等资源,产生并发用户数
分布式环境搭建:
前提:
主机和助攻机的jmeter要保持一致:
- jmeter版本一致
- jdk版本一致,大版本号一致,小版本号可以不同。版本不同,性能可能会存在差异
- jmeter脚本中csv文件要保持一致(特别注意csv路径)
- 相对路径的起始点为jmeter的bin文件夹中
- jmeter的插件要一致
- 同一局域网、防火墙可以放开端口
注意:
① 这个前提条件中,没有对 执行者\助攻机器的 操作系统做要求。也就是说,操作系统可以是 windows、linux、mac。
但是:建议执行者\助攻机器的 操作系统 统一。
② 性能测试 要用 有线网络连接。 分布式中所有的(管理者、执行者)机器,都必须用有线连接网络。做分布式,执行者(助攻机器) 绝对不能 用无线连接
助攻机器的配置----使用linux系统做助攻机器
导入与主控机器相同版本的jmeter
修改配置文件:jmeter.properties
必须修改内容:
去掉认证:server.rmi.ssl.disable=true 表示不适用加密方式传输数据
非必须修改内容:
修改server_port 端口 默认为1099
修改server.rmi.port端口 修改为与上面的端口号相同
助攻机的启动命令:
windows:jmeter-server.bat -Djava.rmi.server.hostname=机器ip
linux :./jmeter-server -Djava.rmi.server.hostname=机器ip
机器ip为助攻机的IP
远程验证:telnet IP 端口
curl IP:端口
主控机器的配置
修改配置文件:jmeter.properties
remote_hosts = 助攻机器ip:端口 多个助攻机器信息用逗号隔开
去掉认证:server.rmi.ssl.disable = true
确认模式:mode = Standard 表示主控机核助攻机之间数据交换方式使用标准模式,可以在jmeter图形界面中看到助攻机的数据传输
注意:修改配置文件后保存,且重启jmeter后才可生效
主控机的启动方式:
-
jmeter的图形界面启动
菜单‘运行’—远程启动—点击某个ip:端口 ,启动远程jmeter-server服务
助攻机收到statrting表示开始,收到finish表示停止 -
cli命令启动
meter -n -t xxx.jmx -l xxxx.jtl -r\-R -e -o xxxx
-r为jmeter.properties文件中,remote_hosts 配置的所有助攻机器全部执行
-R 后面要制定助攻机器 ip:port 多个助攻机器信息用英文逗号隔开
异常情况:
Engine is busy - please try later
以上异常信息表示你调用这个助攻服务机器,正处于繁忙之中,暂时不能被多个主控机器调用执行脚本。
怎么知道,助攻机器,可以被调用去执行其他请求呢?
当这个助攻的服务,有收到 finished指令的时候,说明刚刚做的事情,结束了,可以用于干其他的请求了。