原理
1、Jmeter分布式测试时,选择其中一台作为控制机(Controller),其它机器做为代理机(Agent)。
2、执行时,Controller会把脚本发送到每台Agent上,Agent 拿到脚本后开始执行,Agent执行时不需要启动Jmeter,只需要把jmeter-server.bat文件打开,它应该是通过命令行模式来执行的。
3、执行后,Agent会把结果回传给Controller,Controller会收集所有Agent的信息并汇总
图形解释
环境
- 两台机器:一台WIN7 一台win10(笔记本)
- jmeter版本4.0
- jmeter 安装教程 Jmeter下载安装,插件使用,mave,git,tomcat环境变量配置
两台机器配置jmeter变量 有多少台配置多少台
JMETER_HOME
D:\software\JMETER4.0\apache-jmeter-4.0
CLASSPATH
%JMETER_HOME%\lib\ext\ApacheJMeter_core.jar; %JMETER_HOME%\lib\jorphan.jar;
path
%JMETER_HOME%\bin;
要做分布式的前提:
- 保持一致:jdk一致、
- jmeter版本一致(本机zip) 脚本最好是放到jmeter的zip
- 插件的一致性
- 网络 同一个局域网
如何保存2台机器是在同一个网络呢?
1. 可以连接同一个wife
2. 出在同一个局域网下面,并且固定好他的IP?如何设置呢?如下操作
- 更改适配器设置,IP设置成固定 其他可以一致。参考关于InletexEMC.exe屏幕共享软件设置
步骤
step-1. 修改jmeter为中文,并且解决出现乱码的问题
1).搜索ctrl+f language=en
在下面添加 language=zh_CN
2). 搜索 sampleresult.default.encoding=ISO-8859-1
,下面添加sampleresult.default.encoding=UTF-8
包jmetrer打包成zip 传到执行机里面
step2. **执行机**
修改jmeter.properties
执行机修改jmeter.properties文件的相关内容 在bin目录下可以找到这个文件,notepad++打开这个文件
1. 搜索server-port 改成 server_port = 1234
这个端口可以自定义
2.搜索 rmi.port 改成 server.rmi.port = 1234
3.搜索 ssl.disable 改成 server.rmi.ssl.disable=True(去掉认证)
不使用认证证书 因为是在同一个局域网上,不存在安全问题。
4. jmeter bin 目录启动服务jmeter-server.bat
:
linux bin目录赋予 执行 chmod +x -R bin/ (linux jmeter-server.sh 需要有执行权限 chmod 777 jmeter-server.sh
)
jmeter bin启动:sh jmeter-server.sh -Djava.rmi.server.hostname=ip地址
windows下执: jmeter-server.bat -Djava.rmi.server.hostname=ip地址
- cd 到 jmeter bin目录,执行
jmeter-server.bat -Djava.rmi.server.hostname=ip地址
5. 关闭防火墙:控制面板---windows防火墙
6.telnet的开启关闭操作 如果本地你已经装好telnet就不用这一步骤
开始--服务--按键盘T ---telnet 设置成手动 并且启动起来
7. 在控制机 CDM输入 telnet ip 端口号 尝试连接一下 执行机
以上执行机操作完毕 接下是配置 控制机
step3. **控制机**
修改jmeter.properties
1.打开/bin/jmeter.properties,找到”remote_hosts=127.0.0.1”,进行修改,如下图所示,这一步的目的是把所有的执行机的IP地址都加进来。
2.搜索 ssl.disable 改成 server.rmi.ssl.disable=True(去掉认证)
不使用认证证书 因为是在同一个局域网上,不存在安全问题。
3..搜索 mode=Standard 改成 去掉前面的警号
打开标准模式,能看到jmeter日志
4. 重启jmeter
脚本开发
这里我就随便模拟下,所以我用了假接口取样器(jp@gc - Dummy Sampler),
监听器:添加了 Summary Report
聚合报告
jp@gc - Active Threads Over Time
jp@gc - Transactions per Second
jp@gc - Response Times Over Time
菜单栏点击运行--鼠标放在远程启动 你配置的执行机就会被发现
我们也可以将控制机也当成执行机,讲控制机的操作步骤像执行机那样设置一次就可以了
修改一下脚本 把请求放在循环控制器里面看看总请求是否等于 执行机台数 X 线程数 X 循环次数
操作如下图:
总结:
=========执行机配置============
jmeter.properties
server_port = 1234
server.rmi.port = 1234
server.rmi.ssl.disable=true(去掉认证)
linux bin目录赋予 执行 chmod +x -R bin/ (linux jmeter-server.sh 需要有执行权限)
jmeter bin启动:sh jmeter-server.sh -Djava.rmi.server.hostname=IP
windows jmeter-server.bat -Djava.rmi.server.hostname=ip
配置防火墙:systemctl stop firewalld.service
================控制机配置===============
主控机器:jmeter.properties:
remote_hosts= 助攻机器ip:端口
server.rmi.ssl.disable=true
mode=Standard 可选
重启jmeter