正厚软件-陈老师的技术分享
通常在我们使用Jmeter进行单压力机的CPU、内存、 络带宽等性能瓶颈,导致达不到目标TPS,QPS等指标,一般情况下,一台手提电脑JMeter用户数的极限在8,000-9,000左右的. 但如果你需要模拟更多的用户数时该怎么办我们可以采用Jmeter分布式来执行,主控机通过远程控制压力机启动测试,来实现系统不同级别访问量情况下的性能验证,我就可以通过开启JMeter的分布式脚本测试模式并在多个机器上运行,然后合并测试结果。
- 一、前提条件
主控机(Master)和压力机(Slave)的 jmeter 要一致,具体体现如下:
- jmeter 版本要一致
- jdk 主版本要一致(1.7、1.8…)
- jmeter 脚本中,csv 文件要一致
- jmeter 的插件要一致
- 同一局域 ,防火墙开放端口
- jdk 版本一致,看主版本即可
- csv 文件一致
- 主要数据和路径要一致
- 二、安装JDK,配置JDK环境变量
- 下载JDK安装包: https://www.oracle.com/java/technologies/downloads/#java8-windows 然后找符合自己电脑版本的进行下载,默认安装即可
- JDK环境变量配置(下面以Windows10操作系统为例)
第一步: 安装好后,直接右击【我的电脑】–【属性】,在弹出的对话框中选择【高级系统设置】如下图2–1所示
图2–1
第二步:在弹出的对话框,单击【系统变量】下的【新建】按钮,在弹出的对话框中填入变量名 JAVA_HOME ,变量值:C:Program FilesJavajdk1.8.0_121,如图2-2所示。
图2-2
(此处需根据你自己当时安装的位置进行配置)
第三步: 按照同样的方式创建系统变量classpath,变量名为 classpath,变量值为:
%JAVA_HOME%lib;%JAVA_HOME%libtools.jar,如下图2-3所示
图2–3
第四步 :还要在已有的系统变量 path 的变量值的最后加入以下变量值:%JAVA_HOME%bin;%JAVA_HOME%jrebin 如图2–4所示。
图2–4
第五步:验证是否配置成功:
以管理员方式打开cmd : 执行: java -version ,或者执行命令:javac ,如果出现如下图2–5所示,说明你配置成功.
图2–5
三、Jmeter分布式执行原理:
1、Jmeter分布式测试时,选择其中一台作为主控制机(Master),其它机器做为压力机(Slave)。
2、执行时,Master会把脚本发送到每台Slave上,Slave 拿到脚本后开始执行,Slave执行时不需要启动Jmeter,只需要把jmeter-server.bat文件打开,它应该是通过命令行模式来执行的。
- 四、压力机(Slave)配置
1、Slave机上需要安装JDK、Jmeter保持与主控机环境一致,并且配置好环境变量(见第二节JDK环境变量的配置)。
2、打开“运行”,输入”cmd”,打开运行面板,输入“ipconfig”,找到IP地址,例如图4-1所示:192.168.8.114
图4-1
3、打开Jmeter/bin/jmeter.properties,找到”remote_hosts=127.0.0.1”,把这一行修改为”remote_hosts=192.168.8.114:1099,1099是端口 ,可以随意自定义,见下图图4-2。
图4-2
4、打开jmeter-server.bat文件,就设置完成了,启动如下图4-3所示。
图4-3
- 五、主控机(Master)配置
1、Master机上需要安装JDK、Jmeter,并且配置好环境变量。
2、打开“运行”,输入”cmd”,打开运行面板,输入“ipconfig”,找到IP地址,如图5-1:192.168.8.71
图5-1
3、打开Jmeter/bin/jmeter.properties,找到”remote_hosts=127.0.0.1”,把这一行修改为”remote_hosts=192.168.8.114:1099,192.168.8.71:1099,1099是端口 ,可以随意自定义。如果有多台压力机,这里需要把所有的压力机的IP地址和端口 都加入进来即可。如图5-1所示。
图5-2
4、打开jmeter-server.bat文件,设置完成了,运行启动,如图5-3所示。
图5-3
- 六、添加线程组和请求来运行查看结果
图6-1
- 添加HTTP请求,这里以禅道系统的登录为例如图6-2。
图6-2
3、添加察看结果数和聚合 告,点击运行,可以选择远程启动或者远程全部启动,如果是点击远程启动,可以选择任意一台电脑来运行,如果是点击远程全部启动就会运行控制机和所有的压力机。如图6-3
图6-3
4、这里以点击远程全部启动为例。运行结束后,查看聚合 告,每台电脑设置的线程数为200,这里一共是两台电脑,所以是100*1=200个线程数,如图6-4
- 七、踩坑解决:
- 出现 错: An error occurred: Cannot start. WH-C02XM7GSJHCD.local is a loopback address,原因是默认使用的是回环地址
- 解决方法1: bin/jmeter-server文件30行修改为:RMI_HOST_DEF=-Djava.rmi.server.hostname=本机ip
- 解决方法2: 在命令后加上:-Djava.rmi.server.hostname=本机ip
- 出现 错: java.io.FileNotFoundException: rmi_keystore.jks (No such file or directory)
- 解决方法1: bin/jmeter.properties文件345行修改为:server.rmi.ssl.disable=true
- 解决方法2: 在命令后加上:-Dserver.rmi.ssl.disable=true
- 设置Jmeter-Server中的Jmeter 侦听器端口,默认1099,可不配置: -Dserver_port=1099
- 设置Jmeter-Server中答复请求端口: -Dserver.rmi.localport=50000
- 点赞私信我领取课程资料哦!
文章知识点与官方知识档案匹配,可进一步学习相关知识云原生入门技能树首页概览8710 人正在系统学习中
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!