• 0
  • 0
分享
  • JMeter如何进行多服务器远程测试——软件测试圈
  • 恬恬圈 2024-03-05 15:27:24 字数 2872 阅读 292 收藏 0

  JMeter是Apache软件基金会的开源项目,主要来做功能和性能测试,用Java编写。

  我们一般都会用JMeter在本地进行测试,但是受到单个电脑的性能影响,往往达不到性能测试的要求,无法有效的模拟高并发的场景,那么这个时候,我们就可以借由JMeter提供的Romote Test来进行远程的测试。

  其工作方式入下图:

1.jpg

  我们可以在多台电脑上,启动JMeter的Romote Testing模式,然后用某一台服务器作为Master端通过RMI控制Slave端来执行我们的测试脚本。当JMeter Slave端执行完测试脚本后,会将执行结果发送回Master控制端进行汇总,得出整体的测试报表。

  JMeter的Romote Test模式的好处就是可以用一台终端、一个测试计划在多台服务器端同时对目标服务器进行测试,并且将测试的结果回报给统一的控制终端进行汇总,方便高并发的测试需求。

  下面介绍下JMeter这种远程测试的使用方法。

  Step 1: 在Slave端安装JMeter

  JMeter可以从官网下载,下载地址:https://jmeter.apache.org/download_jmeter.cgi

  由于JMeter的运行需要Java环境,所以,服务器端也必须安装Java。

  注意:为了Remote Testing模式能正常工作,尽量保证Slave端和Master端的JMeter和Java版本一致。

  Step 2: Slave端运行JMeter

  在JMeter的bin目录下,执行下面命令,就可以以服务的方式启动JMeter的Slave端:

  jmeter-server

  JMeter Slave端,默认会启动RMI(Remote Method Invoke)机制,RMI的默认端口为1029,可以在文件jmeter.properties中进行修改。

  另外,从JMeter 4.0开始,RMI默认会使用SSL连接,为了能让Slave端和Master端正常通讯,我们需要生成对应的keys和certificates。在JMeter的bin目录下,自带JKS(Java KeyStore)文件生成命令。

  在JMeter的bin目录下运行如下的命令,并按照提示符输入相应的内容:

  >bin % ./create-rmi-keystore.sh 
  What is your first and last name?
    [Unknown]:  rmi
  What is the name of your organizational unit?
    [Unknown]:  unit
  What is the name of your organization?
    [Unknown]:  org
  What is the name of your City or Locality?
    [Unknown]:  city
  What is the name of your State or Province?
    [Unknown]:  prov
  What is the two-letter country code for this unit?
    [Unknown]:  cn
  Is CN=rmi, OU=unit, O=org, L=city, ST=prov, C=cn correct?
    [no]:  yes
  Enter key password for <rmi>
      (RETURN if same as keystore password):  
  Re-enter new password: 
  Copy the generated rmi_keystore.jks to jmeter/bin folder or reference it in property 'server.rmi.ssl.keystore.file'

  注意:提示符里面的内容,第一条的名字和最后的密码需要记录下来,其他的内容可以任意填写。

  例如,我这里的第一条填写的name是rmi,最后的密码设置为changeit,如果你这里填了其他的值,那么,你需要将你的值写到jmeter.properties文件中,分别对应两个属性:

  server.rmi.ssl.keystore.alias
  server.rmi.ssl.truststore.password

  最后,我们还需要按照提示,将生成的rmi_keystore.jks文件复制到需要连接的JMeter的bin目录下。如果放到其他目录下,我们需要在jmeter.properties文件中通过server.rmi.ssl.keystore.file指定.jks文件的目录。

  Step 3: Master控制Slave执行测试脚本

  在Slave端启动成功后,我们就可以尝试在Master端进行连接控制。

  首先,我们需要将远程JMeter服务器(Slave端)的IP:Port添加到本地JMeter中,方式是修改本地bin目录下的jmeter.properties文件,在其中找到remote_hosts,将自己的远程JMeter的host和端口添加到这里,如果有多个,使用,分隔。

  remote_hosts=<server ip>:1199

  配置完成后,我们就可以运行命令来执行我们的测试计划:

  ./jmeter.sh -n -t test.jmx -r

  -r: 会控制在remote_hosts中配置的所有Slave端来执行我们的测试计划test.jmx;

  你也可以直接在命令行中来指定想要控制的远程JMeter的具体IP:Port,命令如下:

  ./jmeter.sh -n -t test.jmx -R<IP>:1099

  问题和解决方案

  这里可能会出现很多问题,下面列出一些我踩过的坑:

  1. Master报连接被拒绝,这个时候你需要检查防火墙设置,是否屏蔽了端口;

  2. Slave端启动时,你会发现每次的端口都是随机的,这个可能会造成每次都需要去修改防火墙的端口策略,我们可以通过修改jmeter.properties中的server.rmi.localport来设置一个固定端口号;

  3. 某些特殊情况,也会出现客户端无法连接的问题,比如,有些服务器是有双网卡的,这个时候,我们可能就需要指定JMeter启动的服务器端的IP,配置的方式是修改bin/jmeter-server文件,将其中注释的一行修改如下:

  RMI_HOST_DEF=-Djava.rmi.server.hostname=1.2.3.4

  这里的1.2.3.4为你要指定的网卡的IP。


作者:小5    

来源:http://www.51testing.com/html/96/n-7795696.html

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

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • 什么是bug,英文直译过来叫虫,是指程序运行过程中出现的一些问题。任何人都有自己的问题,程序也是,更何况程序是开发人员写的。日常生活中直接冲到别人面前去嚷嚷:“喂,你这里有问题!”你觉得别人会愿意搭理你吗?而如果你有礼貌一点:“你好,我发现你这块有点不妥,换个方式应该会更好”效果会大不相同。同理,测试人员的日常工作中,最主要的就是报bug,bug提交的好,能够减少沟通成本,也会尽快提高软件质量。笔者特地总结了关于报bug的一些注意事项,分享给大家,遵守这些礼仪,可以让我们汇报bug的效果锦上添花。一、注明前置条件先来看下禅道上面默认的bug模板是什么样子的:步骤:是怎么操作出这个bug的,要尽...
            0 1 2676
            分享
          • 三种无效的BugBy Design:设计需求就是这么设计的,无效的BugDuplicate:这个问题别人已经发现,重复的BugNot Repro:无法复现的问题,无效的Bug四种有效的BugFixed:问题被修复External:外部原因(比如浏览器、操作系统、其他第三方软件)造成的问题Postponed:是个问题,发现的太晚了,目前不必修理了,下一个版本讨论是否解决或推迟到以后再解决Won’t?Fix:是个问题,但是不值得修复?,不管它?三维bug定义:bug三维:严重程度,处理优先级,影响范围。Bug严重程度。由Bug的创建者视情况来指定,其中1为最严重的问题,4为最小的问题。一般来讲,1...
            12 12 983
            分享
          •   引言  自2017年面世以来,微信小程序以其相较于APP的进入门槛更低,开发周期更短,费用更低的优势,已经构造了新的微信小程序开发环境和开发者生态。  当前,微信小程序已经赋能了社交、娱乐、旅游出行、购物、餐饮、支付、理财等多种场景。  但随着小程序生态的建立,其特有的安全风险也逐步显示出来:因为小程序本质也是网页交互,其通讯更容易被破解。  本文将从客户端和服务器两个层面讲解微信小程序渗透测试。  客户端层面  客户端方面,主要是对微信小程序进行反编译,得到源代码,检测源代码的保护强度以及是否存在信息泄露,如密钥硬编码等。  要进行反编译,关键是要获取小程序的 .wxapkg 文件。接下...
            11 11 1548
            分享
          •   免费领资料的活动还没参与吗?点击链接填写软件测试调查问卷,即刻领取:http://vote.51testing.com/  1. 如果不考虑上限的话我认为是后端,然后是前端、测试、运维。  后端程序员起薪6K左右,然后会上升很快,一般有3-5年经验的20K左右,当然做的好的30K的也不在少数。  前端程序员起薪7K,然后会平稳上升,有3-5年的工作经验的话一般会有15K-18K,做的好的也有20K+的。  测试工程师的薪资一般会在6K左右,然后上升就比较慢了,之后会在13K左右吧。  运维工程师就有点尴尬了,薪酬是一般程序员的80%,但相对付出的时间不到一般程序员的50%。  当然这是我在...
            0 0 1752
            分享
          • GET和POST是HTTP请求的两种基本方法,要说它们的区别,接触过WEB开发的人都能说出一二。最直观的区别就是GET把参数包含在URL中,POST通过requestbody传递参数。你可能自己写过无数个GET和POST请求,或者已经看过很多权威网站总结出的他们的区别,你非常清楚知道什么时候该用什么。当你在面试中被问到这个问题,你的内心充满了自信和喜悦。你轻轻松松的给出了一个“标准答案”:GET在浏览器回退时是无害的,而POST会再次提交请求。GET产生的URL地址可以被Bookmark,而POST不可以。GET请求会被浏览器主动cache,而POST不会,除非手动设置。GET请求只能进行ur...
            0 0 949
            分享
      • 51testing软件测试圈微信