2019-02-20 JMeter分布式测试

2019-02-20  本文已影响0人  虚怀若谷13

一:分布式使用场景及原理

        使用场景:由于Jmeter 是JAVA应用,对于CPU和内存的消耗比较大,所以,当需要模拟数以万计的并发用户时,使用单台机器模拟所有的并发用户就有些力不从心,甚至会引起JAVA内存溢出错误。为了让Jmeter工具提供更大的负载能力,这时可以使用Jmeter提供的分布式功能来启动多台电脑来分压测试。

        原理:1、Jmeter分布式测试时,选择其中一台作为调度机(master),其它机器做为执行机(slave)。

              2、执行时,master会把脚本发送到每台slave上,slave 拿到脚本后就开始执行,slave执行时不需要启动GUI,我理解它应该是通过命令行模式执行的。

              3、执行完成后,slave会把结果回传给master,master会收集所有slave的信息并汇总。

二:配置执行机(slave)和调度机(master)

1、都必须安装了jmeter,并且已经配置好环境

2、查看slave的ip及端口,bin目录下,点击jmeter-server.bat查看,如图:

3、调度机(master)配置

        找到Jmeter的bin目录下jmeter.properties文件,搜索remote_hosts=127.0.0.1,将slave机的IP和端口写在后面,比如:

remote_hosts=127.0.0.1,127.0.0.2:80,127.0.0.3:80其中127.0.0.2和127.0.0.3为Agent机的IP,每个slave机之间用英文半角逗号隔开,修改保存。

三:运行

1、slave机启动jmeter-server.bat

2、master机打开jmeter界面,选择运行,有运程启动、运程全部启动两个选项,如图:

3、然后就基本配置完成了,可以在slave机器看到信息了,master也会收集到运行结果。

四、注意事项

1、保持master和slave机器的JDK、jmeter以及插件等配置版本一致;

2、如果测试数据有用到CSV或者其他方式进行参数化,需要将data pools在每台slave上复制一份,且读取路径必须保持一致;

3、确保master和slave机器在同一个子网里面;

4、检查防火墙是否被关闭,端口是否被占用(防火墙会影响脚本执行和测试结构收集,端口占用会导致slave机报错);

5、分布式测试中,通过远程启动代理服务器,默认查看结果树中的响应数据为空,只有错误信息会被报回;

6、如果并发较高,建议将master机设置为只启动测试脚本和收集汇总测试结果,在配置文件里去掉master机的IP;

7、分布式测试中,如果1S启动100个模拟请求,有5个slave机,那么需要将脚本的线程数设置为20,否则模拟请求数会变成500,和预期结果相差太大。

五:自定义端口

        上面其实已经实现了Jmeter的分布式测试,这部分主要介绍下如何自定义slave端口:

        1、slave:在slave机的Jmeter的bin目录下,找到jmeter.properties文件,修改如下两个配置项,比如我这里修改为1888:

                    server_port=1888

                 server.rmi.localport=1888

  2、启动slave机上的jmeter-server.bat,如下图,端口已经修改为:1888

上一篇 下一篇

猜你喜欢

热点阅读