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

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

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          •    稳定性对产品的重要性不言而喻。  而作为质量保障,在稳定性测试方面的探索也在不断演化。记得两年前我们做稳定性测试还是基于恒定的压力,7*24小时长时间运行,关注的指标无非是吞吐量TPS的抖动、响应时间的变化趋势,以及各种资源是否泄露。稳定性测试的场景设计简单,和线上实际运行有较大的出入。带来的直接结果是稳定性测试发现的问题比较有限,做完之后仍然没有特别大的信心。  那稳定性测试究竟该如何做?别人在怎么做?性能测试组今年在这方面做了一些思考和改进,虽然称不上很好的解决方案,但是通过努力比以前的做法还是有不少增强。  一、稳定性测试的三个阶段  第一个阶段:恒定压力阶段  目标是为...
            0 0 3647
            分享
          •   苹果 Vision Pro的新用户可能会对发布时的原生应用选择感到失望,据称大约有 150 款应用是为该头显开发的体验。1 月 16 日,苹果公司为 Apple Vision Pro 开放了一个版本的应用商店,让开发者有机会在该头显 2 月 2 日发布日期之前添加自己的应用程序。不过,似乎很少有开发者会在一开始就向用户提供真正利用头显功能的应用程序。  上周末,据TechCrunch报道,AppFigures 的研究表明,已经更新以包含 Vision Pro 特定功能(即某种形式的虚拟现实或混合现实组件)的应用程序可能不超过 150 个。到用户使用苹果 Vision Pro 时,可能还会有...
            0 0 759
            分享
          • 1. 通过cmd窗口命令启动1.1 启动单个appium服务打开cmd,直接输入:appium这里默认启动的端口是4723,如果没有被占用的情况C:\Users\Carl_DJ>appium [Appium] Welcome to Appium v1.17.1 [Appium] Appium REST http interface listener started on 0.0.0.0:4723也可以直接输入:appium -p 4723C:\Users\Carl_DJ...
            0 0 2865
            分享
          • 最近一个月,Dify 已全面接入了全球顶尖开源模型 & 国内闭源商用模型,让用户能够在一个平台根据不同需求场景调用 & 评估不同模型能力。同时,我们也一直在与国内优秀的大模型厂商保持深度的沟通与交流,同步分享当前技术趋势。本次线上直面会我们邀请了百川智能的 Alex 老师和 Dify 创始人张路宇和大家一起探讨关于开源 LLMOps 和 Baichuan 开源模型结合的最佳实践、当前模型技术及市场的发展趋势等话题。直面会上,百川智能的 Alex 老师实战演示了如何在 Dify 上使用 Baichuan 开源模型的能力,在数分钟内即可以在 Dify 创建一个基于 Baichuan...
            0 0 2198
            分享
          •   1.执行获取token接口  在结果树这里,使用$符号提取token值。  $根节点,$.data.token表示提取根节点下的data节点下的token节点的值。  2.使用json提取器,提取token  变量路径就是把在结果树提取的路径写上。  3.使用BeanShell取样器或者BeanShell后置处理程序,将token设置为全局变量  工具--函数助手,用函数__setProperty将获取到的参数设为属性。  4.在其他接口直接引用token  工具--函数助手,用函数__P来调用jmeter属性,获取属性值。  引用token前面要加Bearer,跟后面的token进行拼接...
            0 0 927
            分享
      • 51testing软件测试圈微信