JMeter中分布式测试时,本地无法承载时如何操作?

栏目: 后端 · 发布时间: 5年前

对于并发量很大的需求,如上万并发量,受到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中分布式测试时,本地无法承载时如何操作?

一、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不支持含空格的文件夹路径。)

JMeter中分布式测试时,本地无法承载时如何操作?

4、上图上标红的IP和端口会在master里配置时用到。IP就是slave机器IP,端口默认是1099,端口也可以自定义,这里我自定义为1000。

5、多台slave的话,重复1~4步骤就好。

三、调度机(master)配置:

1、脚本:简单的一个访问百度的脚本:

JMeter中分布式测试时,本地无法承载时如何操作?

2、打开Jmeter的bin目录下jmeter.properties文件,修改如下配置IP和Port是slaver机的IP以及默认的1099端口,一下两种配置方法都可以。

remote_hosts=172.16.xx.xx, http://172.16.xx.xxx

remote_hosts=172.16.xx.xx:1099, http://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,选择运行,有运程启动、运程全部启动两个选项:

JMeter中分布式测试时,本地无法承载时如何操作?

4、选择远程启动-->10.13.225.12:1000

a) master结果,这里我只启动了10.13.225.12:1000这一台slave,所以只有一个结果(线程数和循环次数都是1):

JMeter中分布式测试时,本地无法承载时如何操作?

b) slave控制台信息:

JMeter中分布式测试时,本地无法承载时如何操作?

5、选择远程启动-->远程全部启动:

a) master结果,全部启动,我配置了2台slave,所以有两次执行结果:

JMeter中分布式测试时,本地无法承载时如何操作?

四、自定义端口:

如何自定义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这里设定一下。

JMeter中分布式测试时,本地无法承载时如何操作?

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

欢迎加入  51软件测试大家庭,在这里你将获得【最新行业资讯】,【免费测试 工具 安装包】,【软件测试技术干货】,【面试求职技巧】... 51与你共同学习,一起成长!期待你的加入: QQ                     群:                    755431660


以上所述就是小编给大家介绍的《JMeter中分布式测试时,本地无法承载时如何操作?》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

The Information

The Information

James Gleick / Vintage / 2012-3-6 / USD 16.95

James Gleick, the author of the best sellers Chaos and Genius, now brings us a work just as astonishing and masterly: a revelatory chronicle and meditation that shows how information has become th......一起来看看 《The Information》 这本书的介绍吧!

在线进制转换器
在线进制转换器

各进制数互转换器

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具