• 6
  • 8
分享

1、场景

在做性能测试时,单台机器进行压测可能达不到预期结果。主要原因是单台机器压到一定程度会出现瓶颈。也有可能单机网卡跟不上造成结果偏差较大。
例如4C8G的window server机器,使用UI方式,最高压测在1800并发(RT 20ms以内)左右。如果对于XML文件进行解析,更容易吃CPU,并发数会更低。

当单台机器不能支持更大的并发时需要考虑分布式压力测试。 

2、原理

原理图如下:

1359074-20200426170831727-1189153783.png

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

  • master通过GUI界面启动slave机器,将jmeter压测发送给每台启动的slave

  • slave启动jmeter-server,获得脚本后开始执行

  • slave执行完成后将结果传回给master,master收集整合显示 

3、注意事项

  • 关闭防火墙和杀毒软件,开放端口

    $ service firewalld stop
    $ service iptables stop
  • 2.所有机器最好在同一个子网上

        可以使用ping命令进行检查

  • 所有机器中最好使用相同版本的jdk和jmeter

  • 禁用SSL

 如果在启动jmeter-server.bat 时出现如下错误,则SSL没有禁用

 1359074-20200426171214785-1521278633.png

   禁用方法,jmeter.properties 文件下查找 server.rmi.ssl.disable,取消注释,并将其值修改为 true:server.rmi.ssl.disable=true     

 1359074-20200426171234276-54442718.png

4、slave配置

在slave机器中,启动bin目录下的 jmeter-server.bat,如下图:

1359074-20200426171138359-44136069.png

启动后的ip和port为:192.168.10.131:50043

当然启动时端口也是可以自定义的。
在slave机器的 Jmeter的bin目录下,修改jmeter.properties文件下的server_port和server.rmi.localport两个配置项。比如修改为1000:

server_port=4444
server.rmi.localport=4444

1359074-20200426171154014-1177545561.png

启动后的ip和port为:192.168.10.131:4444 

5、master配置

在master机器的 Jmeter的bin目录下,修改jmeter.properties文件下的remote_hosts项,添加IP和port,多台slave的情况下,使用逗号(,)进行分割。

1359074-20200426171329915-1181733830.png

完成配置后启动master机器上的 jmeter。
在Run>>Remote Start下可以查看配置的remote_hosts项。

  1359074-20200426171354599-1019755510.png

注意:如果jmeter已经启动,修改jmeter.properties文件后需要重启jmeter配置项才可以生效。

6、脚本执行

新建一个线程组,线程组下添加一个debug sampler调试采样器和一个树结构监听器
将debug sampler重新命名为:${__machineIP()} ,该函数的意思是获取执行机器的ip

1359074-20200426172045882-303264750.png

通过菜单栏的开始按钮运行脚本

1359074-20200426172052979-190900530.png

通过 Run>>Remote Start>>192.168.10.131:4444运行脚本

1359074-20200426172148625-2077863634.png

如果要同时在所有的 slave 机器上运行,则通过 Run>>Remote Start All 执行脚本

 1359074-20200427094038229-98070906.png

注意:

在分布式执行中,master 向 slave 发送测试计划时不会将外部文件一起发送。所以在测试中如果使用 csv 等外部文件进行参数化,则需要把参数文件在每台 slave 上拷贝一份,最好都放置在 bin 目录下,因为 Jmeter 会直接从 bin 目录下查找。


  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          •   Airtest简介  AirtestIDE是一款适用于游戏和应用程序的跨平台UI测试自动化集成开发环境(IDE),为移动应用程序开发人员和测试人员提供了广泛的工具,可在便利且易于使用的环境中编写全自动测试脚本。  相比较其他传统的自动化测试工具(如Appium,RF等),AirtestIDE主要具有两大优势:  1.基于图像识别的Airtest框架  Airtest是一个基于图片识别的跨平台的自动化测试框架,同时它最强大的地方在于它几乎兼容所有Android移动应用程序和Windows游戏等。  2.基于UI识别的Poco框架  Poco是一个跨引擎UI自动化框架,并且提供了独立于引擎的强...
            13 14 2286
            分享
          • 读者提问:什么是自动化测试,自动化测试的动机和时机是什么 ?阿常回答:一、自动化测试的概念自动化测试的本质是先写一段代码,然后去测试另一段代码。所以实现自动化测试用例本身属于开发工作,需要投入大量的时间和精力,并且已经开发完成的用例还必须随着被测对象的改变而不断更新,你还需要为此付出维护测试用例的成本。二、自动化测试的动机1、自动化测试可以替代大量的手工机械的重复操作,QA可花更多的时间在更全面的用例设计和新功能的测试上。2、自动化测试可以大幅提升回归测试的效率。3、自动化测试可以更好的利用无人值守时间,非工作时间执行测试,工作时间分析失败用例。4、自动化测试可以高效实现某些手工测试...
            0 0 1048
            分享
          • 1.页面链接检查每一个链接是否都有对应的页面,并且页面之间切换正确。可以使用一些工具,如LinkBotPro、File-AIDCS、HTML Link Validater、Xenu等工具。LinkBotPro不支持中文,中文字符显示为乱码;HTML Link Validater只能测试以Html或者htm结尾的网页链接;Xenu无需安装,支持asp、do、jsp等结尾的网页,xenu测试链接包括内部链接和外部链接,在使用的时候应该注意,同时能够生成html格式的测试报告。如果系统用QTP进行自动化测试,也可以使用QTP的页面检查点检查链接。2. 相关性检查功能相关性:删除/增加一项会不会对其他...
            0 0 1388
            分享
          •   软件测试行业是我国近些年兴起的行业之一,因此很多人都想要知道目前软件测试就业前景怎样?值不值得入?  其实就软件测试前景可以从以下几个方面来分析:  1、互联网发展需求  在这万物互联、生活事事都软件化智能化的时代,软件测试不管何时何地都会占有一席重要之地的,所以也许其他行业会被替代,但是软件测试不会。  2、需求量大  基本上任何一个成型的互联网公司都是需要软件测试工程师的,而根据有关数据的调查,软件测试行业每年以30万人才缺口递增,所以整个市场缺口是非常大的。  3、入门门槛相对较低  零基础可入门,代码能力要求相对来说较低,就拿小编的朋友来说,他在做测试员工作之前,是一家小公司的运营...
            0 0 670
            分享
          •   Jmeter逻辑控制器  可以控制samplers(采样器)的执行顺序。控制器需和采样器一起使用,否则没有意义。在控制器下的所有采样器都会被当成一个整体,执行时也会一起被执行。Jmeter逻辑控制器可对元件的执行逻辑进行控制,除一次控制器外,还可以嵌套其他种类的逻辑控制器。  分类:  ·控制测试计划执行过程中节点的逻辑执行顺序,如Loop Controller(循环控制器)、If Controller(IF 控制器)  · 对测试计划中的脚本进行分组,如Simple Controller(简单控制器)、事务控制器  · 控制该控制器下元件的执行次数,如 Through...
            0 0 376
            分享
      • 51testing软件测试圈微信