JMeter中分布式测试时,本地无法承载时如何操作?
发布时间:2019-03-05 10:48 发布作者:admin 浏览次数:
对于并发量很大的需求,如上万并发量,受到CPU和内存的限制,单机模仿场景是完成不了的,为了让JMeter供给更大的负载能力,须运用它的分布式机制,即多台机器同时发生负载的功用。
特色:
1.实在的性能测验,不存在网络瓶颈问题
2.GUI仅限windows平台,命令行可在linux与windows
3.测验成果保存在本地一台master上
4.运用这台master办理多个Jmeter Engines,也叫做slave
5.测验脚本会被master主动发送到作为负载生成器的slave,但数据文件不会
在进行分布式平台测验的时分,要最好留意以下几点:
1.master也能够同时作slave,但要留意负载适量
2.一切负载生成器slave上装置相同的jmeter与jdk
3.防火墙和杀毒软件要关闭或过滤
4.保证一切master与slave在同一个网段或子网,没有网络推迟
5.master与slave能够是windows或linux,不必悉数是同一个OS,但要敞开防火墙,不然connect fail
6.脚本运用的数据文件(比方CSV)需求单独传到每个slave,而且脚本中指定的文件途径要能够在每个slave找到该文件,常运用相对途径,较方便
7. 保证jmeter能够拜访服务器
8. 保证各个jmeter版别一致,不同版别可能会存在协同问题
一、Jmeter分布式履行原理:
1、Jmeter分布式测验时,挑选其中一台作为调度机(master),其它机器做为履行机(slave)。
2、履行时,master会把脚本发送到每台slave上,slave 拿到脚本后就开端履行,slave履行时不需求发动GUI,我了解它应该是经过命令行形式履行的。
3、履行完成后,slave会把成果回传给master,master会收集一切slave的信息并汇总。
一、履行机(slave)装备:
1、slave机上需求装置Jmeter 和 支撑当前Jmeter版别的JDK。(有时在运行Jmeter时会提示JDK版别过低)
2、增加环境变量:JMETER_HOME途径为bin目录的上一级目录,这样发动jmeter-server服务时,就只会看到Found ApacheJMeter_core.jar
3、发动bin目录下的:jmeter-server.bat,发动成功如下图。(jmeter 的装置途径不要包括空格,因为jmeter-server.bat不支撑含空格的文件夹途径。)
4、上图上标红的IP和端口会在master里装备时用到。IP就是slave机器IP,端口默许是1099,端口也能够自定义,这儿我自定义为1000。
5、多台slave的话,重复1~4步骤就好。
三、调度机(master)装备:
1、脚本:简单的一个拜访百度的脚本:
2、翻开Jmeter的bin目录下jmeter.properties文件,修正如下装备IP和Port是slaver机的IP以及默许的1099端口,一下两种装备办法都能够。
remote_hosts=172.16.xx.xx,172.16.xx.xxx
remote_hosts=172.16.xx.xx:1099,172.16.xx.xxx:1099
多台slave之前用 "," 隔开。
修正如下装备,这儿端口我自定义为100:
remote_hosts=10.13.223.202:1000,10.13.225.12:1000
我这装备了2台,能够看到标红的这个就是上面截图slave的IP和Port.
3、翻开Jmeter,挑选运行,有运程发动、运程悉数发动两个选项:
4、挑选长途发动-->10.13.225.12:1000
a) master成果,这儿我只发动了10.13.225.12:1000这一台slave,所以只要一个成果(线程数和循环次数都是1):
b) slave控制台信息:
5、挑选长途发动-->长途悉数发动:
a) master成果,悉数发动,我装备了2台slave,所以有两次履行成果:
四、自定义端口:
怎么自定义slave端口:
1、slave:在slave机的Jmeter的bin目录下,找到jmeter.properties文件,修正如下两个装备项,比方我这儿修正为9999:
server_port=9999
server.rmi.localport=9999
2、发动slave机上的jmeter-server.bat端口已经修正为:9999
3、master:修正master机器的jmeter.properties文件:
remote_hosts
4、重启jmeter.bat
五、其它说明:
1、调度机(master)和履行机(slave)最好分隔,因为master需求发送信息给slave而且会接收slave回传回来的测验数据,所以mater本身会有消耗,所以建议单独用一台机器作为mater。
2、参数文件:假如运用csv进行参数化,那么需求把参数文件在每台slave上拷一份且途径需求设置成一样的,Filename这儿设定一下。
3、每台机器上装置的Jmeter版别和插件最好都一致,不然会出一些意外的问题。
4、假如想要master也分担负载,让master本身也履行测验方案,需求把master 的 IP 和 端口也写到装备文件里,在长途发动前,也要把master的 jmeter-server.bat运行,这样master也能和其他slave一同履行测验方案了。
六、比较
与LoadRunner的异同:
1.都能够完成分布式负载,各有优劣
2.都支撑windows和linux下的slave,但master,jmeter跨平台,LR不
3.LR能够指定每个slave生成不同数量的并发用户,jmeter不行
4.jmeter中测验方案运用的数据文件不会随脚本发送到slave,而LR能够经过挑选纳入LR办理一同发送到远端slave