当前位置: 首页 > web >正文

Jmeter如何进行多服务器远程测试?

🍅 点击文末小卡片 ,免费获取软件测试全套资料,资料在手,涨薪更快  

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

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

其工作方式入下图:

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

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

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

Step 1: 在Slave端安装JMeter
  
JMeter可以从官网下载,下载地址:Apache JMeter - Download Apache JMeter
  
由于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]:  rmiWhat is the name of your organizational unit?[Unknown]:  unitWhat is the name of your organization?[Unknown]:  orgWhat is the name of your City or Locality?[Unknown]:  cityWhat is the name of your State or Province?[Unknown]:  provWhat is the two-letter country code for this unit?[Unknown]:  cnIs CN=rmi, OU=unit, O=org, L=city, ST=prov, C=cn correct?[no]:  yesEnter 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.aliasserver.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。

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。

http://www.xdnf.cn/news/12435.html

相关文章:

  • Podman 和 Docker
  • 关于如何使用VScode编译下载keil工程的步骤演示
  • BugKu Web渗透之网站被hei(仅仅是ctf题目名称)
  • Three.js中AR实现详解并详细介绍基于图像标记模式AR生成的详细步骤
  • CSS中justify-content: space-between首尾贴边中间等距(两端元素紧贴左右边缘,中间元素等距均匀分布)
  • NLP学习路线图(二十七):Transformer编码器/解码器
  • 传输层:udp与tcp协议
  • 分布式微服务系统架构第144集:FastAPI全栈开发教育系统
  • 基于 Vue 和 Spring Boot 实现滑块验证码的机器验证
  • Linux编程:1、文件编程
  • AI预测3D新模型百十个定位预测+胆码预测+去和尾2025年6月6日第100弹
  • pdf2zh 简明本地部署和api调用,以及离线部署总结
  • 行业案例 | ASOS 借助 Azure AI Foundry(国际版)为年轻时尚爱好者打造惊喜体验
  • 在Windows下利用LoongArch-toolchain交叉编译Qt
  • QuaggaJS用法详解
  • 分布式协同自动化办公系统-工作流引擎-流程设计
  • aardio 简单网页自动化
  • 命令行以TLS/SSL显式加密方式访问FTP服务器
  • 应用分享 | 精准生成和时序控制!AWG在确定性三量子比特纠缠光子源中的应用
  • http头部注入攻击
  • MySQL基础(二)SQL语言、客户端工具
  • 中国首套1公里高分辨率大气湿度指数数据集(2003~2020)
  • 服务器健康摩尔斯电码:深度解读S0-S5状态指示灯
  • ADI的BF609双核DSP怎么做开发,我来说一说(五)LAN口测试
  • 在.NET Core控制器中获取AJAX传递的Body参数
  • 【行驶证识别成表格】批量OCR行驶证识别与Excel自动化处理系统,行驶证扫描件和照片图片识别后保存为Excel表格,基于QT和华为ocr识别的实现教程
  • AI大模型学习三十三、HeyGem.ai 服务端(ubuntu)docker 安装 /客户端(win)分离部署
  • 【Linux】虚拟机代理,自动化脚本修改~/.bashrc
  • GAN生成模型评价体系:从主观感知到客观度量的技术演进
  • LeetCode 2434.使用机器人打印字典序最小的字符串:贪心(栈)——清晰题解