• 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 目录下查找。


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

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • 环境首先环境是非常重要的,需要尽可能跟生产环境靠近。比方说,使用同样的nginx版本,php的话需要启用fpm,zend-optimizer等等,参数配置也最好跟生产环境保持一致。当然,php的版本更加需要保持一致,不能说线上是跑5.3,而测试环境却是php 7;除非是要测试不同php版本的性能。网络也需要注意,测试机跟服务器之间是什么网络连接?100M还是千兆的网线?也同样需要跟生产环境尽可能保持一致。我曾经看过有人直接在自己的笔记本上跑压测的客户端,然后笔记本使用的wifi;这直接就变成是在测试wifi的性能了。当然,也可以考虑直接在服务器本机上面跑压测程序,这样就可以规避掉网络层的,更有...
            0 0 890
            分享
          • 1、引言小屌丝: 鱼哥,你说爬虫或者登录网页,最烦的是那个操作?小鱼:图片验证码了。小屌丝:确实是的,那有没有什么办法,能破解这种繁琐的验证呢?小鱼:方法嘛,有啊,例如:cookie啊,或者利用第三方库啊小屌丝:真的有第三方库,可以解决这个问题?小鱼:对啊,很方便的,小屌丝:演示一下如何?小鱼:怎么突然点饿了 ~小屌丝:我懂我懂, 你分享完,咱们泡澡去~2、 ddddocr2.1 介绍验证码,复杂一点的有滑块验证码,点选文章和点选图片验证码。这些都是爬虫和WebUI自动化测试中中的老大难问题,今天介绍一款通用验证码识别 SDK 对他们彻底说拜拜,它的名字是 ddddocr 带带弟弟 OCR 通...
            0 0 1710
            分享
          • 最近公司需要开发一个简单的报名系统,供外网用户提供报名服务,由于我们公司是个初创的微型公司,开发人员都是刚毕业不久,开发经验相当缺乏。对于服务器性能测试这块的经验更是少得可以忽略。迫使不得不让我们去尝试了解测试的知识。首先我们的需求场景如下:服务器硬件:(只有一台) 系统:Windows 2003 WebServer:Tomcat 7.0 Jdk:7.0 CPU:8核 2.9GHz两个 内存:16G报名应用系统:只需要向外提供一个报名和找回报名号的接口。我们需要:测试服务器能同时承受多少条HTTP请求。通过各种百度后发现LoadRunner是好,但是使用起来短时间...
            10 11 1847
            分享
          •   缘起  众所周知,系统测试是需要编写测试用例的,它是保证测试执行正确性、有效性的基础。但是,大家可能很难想象神秘的黑客在挖掘漏洞的时候会提前编写测试用例,然后按照用例去执行。因为他的漏洞挖掘思路是存在脑海中,并且不断的根据实际情况进行调整的。  当然,关于黑客单打独斗挖掘漏洞的这种想象,显然已不大符合当前安全界的实际情况。从网络及信息安全的攻击角度来说,恶意攻击分子已经逐渐形成了目标精准、分工明确、技术先进的网络黑色产业链条,相应的从安全保护和防御角度来说,国家加大了对网络攻击等犯罪行为的打击力度,企业也逐渐加大了网络安全投入。  那么,当安全测试成为企业安全建设中的一个重要环节,安全测试...
            0 0 1865
            分享
          • 背景:最近有个项目,开发工时在1000+h,测试这边预估的工作量在400h左右,但按照项目截点算,预留给测试的时间只有200h左右。(这里先不考虑开发可能提前交付,以及项目截点延期)纵观,整个项目的研发过程,我们总会遇到测试资源和时间很有局限的情况:一是:在项目截点固定的前提下,可能受到产品、开发部分工作进度的压缩;二是:测试工作本身需要终止点,可能是上线时间到了,也可能是发现的问题都解决了。测试工作最大的挑战就是在有效的时间内发现较多的缺陷,从而使软件达到一个相对可靠的质量(不敢说绝对可靠,毕竟发现的问题越多隐藏的问题也就越多)。这就要求我们测试要有策略性的测试,那么什么是测试策略呢?何为测...
            0 0 1473
            分享
      • 51testing软件测试圈微信