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

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。

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

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

相关文章:

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

&#x1f345; 点击文末小卡片 &#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 JMeter是Apache软件基金会的开源项目&#xff0c;主要来做功能和性能测试&#xff0c;用Java编写。 我们一般都会用JMeter在本地进行测试&#xff0c;但是受到单…...

2.slf4j入口

文章目录 一、故事引入二、原理探究三、SLF4JServiceProvider四、总结 一、故事引入 故事要从下面这段代码说起 public class App {private static final Logger logger LoggerFactory.getLogger(App.class);public static void main( String[] args ) throws Exception {lo…...

初学stm32 --- CAN

目录 CAN介绍 CAN总线拓扑图 CAN总线特点 CAN应用场景 CAN物理层 CAN收发器芯片介绍 CAN协议层 数据帧介绍 CAN位时序介绍 数据同步过程 硬件同步 再同步 CAN总线仲裁 STM32 CAN控制器介绍 CAN控制器模式 CAN控制器模式 CAN控制器框图 发送处理 接收处理 接收过…...

软件测试—接口测试面试题及jmeter面试题

一&#xff0c;接口面试题 1.接口的作用 实现前后端的交互&#xff0c;实现数据的传输 2.什么是接口测试 接口测试就是对系统或组件之间的接口进行测试&#xff0c;主要是校验数据的交换、传递和控制管理过程&#xff0c;以及相互逻辑关系 3.接口测试必要性 1.可以发现很…...

图论的起点——七桥问题

普瑞格尔河从古堡哥尼斯堡市中心流过&#xff0c;河中有小岛两座&#xff0c;筑有7座古桥&#xff0c;哥尼斯堡人杰地灵&#xff0c;市民普遍爱好数学。1736年&#xff0c;该市一名市民向大数学家Euler提出如下的所谓“七桥问题”&#xff1a; 从家里出发&#xff0c;7座桥每桥…...

嵌入式开发通讯协议大全(在写中)

目录 modbus RTU通讯协议&#xff1a; pmbus通讯协议&#xff1a; modbus RTU通讯协议&#xff1a; 主要应用功能&#xff1a; 规范了软件变量&#xff0c;访问功能码&#xff0c;给不同工程师开发的不同产品有统一的通讯标准 帧结构简单&#xff0c;占用带宽少&#xff0c…...

webpack 4 升级 webpack 5

升级至最新的 webpack 和 webpack-cli npm run build 报错&#xff0c; unknown option -p 解决方案&#xff1a; 改成 --mode production npm run build 报错 unknown option --hide-modules 解决方案&#xff1a;直接移除 npm run build 报错&#xff1a;TypeError: Cannot a…...

oneplus3t-lineageos-16.1编译-android9, oneplus3t-lineage-14编译-android7

oneplus3t-lineage-14编译-android7 1 清华linageos镜像 x lineage-14.1-20180223-nightly-oneplus3-signed.zip ntfs分区挂载为普通用户目录 , ext4分区挂载为普通用户目录 bfsu/lineageOS镜像 ts/lingeageOS镜像 oneplus3/lineage-build-simple-manual.md, manifest-p…...

HTML中最基本的东西

本文内容的标签&#xff0c;将是看懂HTML的最基本之基本 &#xff0c;是跟您在写文章时候一样内容。一般想掌握极其容易&#xff0c;但是也要懂得如何使用&#xff0c;过目不忘&#xff0c;为手熟尔。才是我们学习的最终目的。其实边看边敲都行&#xff0c;或者是边看边复制粘贴…...

<OS 有关>Ubuntu 24 安装 openssh-server, tailscale+ssh 慢增加

更新日志&#xff1a; Created on 14Jan.2025 by Dave , added openssh-server, tailescape Updated on 15Jan.2025, added "tailescape - tailscape ssh" 前期准备&#xff1a; 1. 更新可用软件包的数据库 2. 升级系统中所有已安装的软件包到最新版本 3. 安装 cur…...

神经网络常见操作(卷积)输入输出

卷积 dimd的tensor可以进行torch.nn.Convnd(in_channels,out_channels),其中nd-1,d-2对于torch.nn.Convnd(in_channels,out_channels)&#xff0c;改变的是tensor的倒数n1维的大小 全连接 使用torch.nn.Linear(in_features,out_features,bias)实现YXWT b,其中X 的形状为 (ba…...

25/1/16 嵌入式笔记 STM32F108

输入捕获 TIM_TimeBaseInitTypeDef TIM_TimeBaseStruct; TIM_TimeBaseStruct.TIM_Period 0xFFFF; // 自动重装载值 TIM_TimeBaseStruct.TIM_Prescaler 71; // 预分频值 TIM_TimeBaseStruct.TIM_ClockDivision 0; TIM_TimeBaseStruct.TIM_CounterMode TIM_CounterMode_Up…...

mac 安装 node

brew versions node // 安装 node brew versions node14 // 安装指定版本 卸载node: sudo npm uninstall npm -g sudo rm -rf /usr/local/lib/node /usr/local/lib/node_modules /var/db/receipts/org.nodejs.* sudo rm -rf /usr/local/include/node /Users/$USER/.npm su…...

mysql常用运维命令

mysql常用运维命令 查看当前所有连接 -- 查看当前所有连接 SHOW FULL PROCESSLIST;说明&#xff1a; 关注State状态列&#xff0c;是否有锁。如果大量状态是waiting for handler commit检查磁盘是否占满关注Time耗时列&#xff0c;是否有慢查询关注Command列&#xff0c;如果…...

正则表达式学习网站

网上亲测好用的网站&#xff1a; Regexlearn 这个网站可以从0开始教会正则表达式的使用。 mklab 包含常用表达式&#xff0c;车次&#xff0c;超链接&#xff0c;号码等提取。...

gradle,adb命令行编译备忘

追踪依赖(为了解决duplicateClass…错误) gradlew.bat app:dependencies > dep-tree.txt # 分析dep-tree.txt的依赖结构&#xff0c;找到对应的包&#xff0c;可能需要做exclude控制,或者查看库issueverbose编译(我一直需要verbose) gradlew.bat assembleDebug -Dhttps.pr…...

C++:工具VSCode的编译和调试文件内容:

ubuntu24.04&#xff0c; vscode 配置文件 C 的环境 下载的gcc&#xff0c;使用命令为 sudo aptitude update sudo aptitude install build-essential -f- sudo: 以超级用户权限运行命令。 - aptitude: 包管理工具&#xff0c;用于安装、更新和删除软件包。 - install: 安装指…...

SpringMVC Idea 搭建 部署war

1.创建 Idea项目 使用Maven模板 创建 webApp模板项目 2.导入依赖 <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/POM/4.0.0 http://ma…...

YOLOv10-1.1部分代码阅读笔记-loaders.py

loaders.py ultralytics\data\loaders.py 目录 loaders.py 1.所需的库和模块 2.class SourceTypes: 3.class LoadStreams: 4.class LoadScreenshots: 5.class LoadImagesAndVideos: 6.class LoadPilAndNumpy: 7.class LoadTensor: 8.def autocast_list(source…...

Windows的Redis查看自己设置的密码并更改设置密码

查看密码 由于我的Redis安装很久了&#xff0c;所以忘记是否有设置密码&#xff0c;查看步骤如下&#xff1a; 启动redis&#xff0c;启动流程可以看这篇文章&#xff1a;https://blog.csdn.net/changyana/article/details/127679871 在redis安装目录下打开redis-cli.exe&…...

Leetcode 3577. Count the Number of Computer Unlocking Permutations

Leetcode 3577. Count the Number of Computer Unlocking Permutations 1. 解题思路2. 代码实现 题目链接&#xff1a;3577. Count the Number of Computer Unlocking Permutations 1. 解题思路 这一题其实就是一个脑筋急转弯&#xff0c;要想要能够将所有的电脑解锁&#x…...

第一篇:Agent2Agent (A2A) 协议——协作式人工智能的黎明

AI 领域的快速发展正在催生一个新时代&#xff0c;智能代理&#xff08;agents&#xff09;不再是孤立的个体&#xff0c;而是能够像一个数字团队一样协作。然而&#xff0c;当前 AI 生态系统的碎片化阻碍了这一愿景的实现&#xff0c;导致了“AI 巴别塔问题”——不同代理之间…...

Linux-07 ubuntu 的 chrome 启动不了

文章目录 问题原因解决步骤一、卸载旧版chrome二、重新安装chorme三、启动不了&#xff0c;报错如下四、启动不了&#xff0c;解决如下 总结 问题原因 在应用中可以看到chrome&#xff0c;但是打不开(说明&#xff1a;原来的ubuntu系统出问题了&#xff0c;这个是备用的硬盘&a…...

Swagger和OpenApi的前世今生

Swagger与OpenAPI的关系演进是API标准化进程中的重要篇章&#xff0c;二者共同塑造了现代RESTful API的开发范式。 本期就扒一扒其技术演进的关键节点与核心逻辑&#xff1a; &#x1f504; 一、起源与初创期&#xff1a;Swagger的诞生&#xff08;2010-2014&#xff09; 核心…...

OPenCV CUDA模块图像处理-----对图像执行 均值漂移滤波(Mean Shift Filtering)函数meanShiftFiltering()

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 在 GPU 上对图像执行 均值漂移滤波&#xff08;Mean Shift Filtering&#xff09;&#xff0c;用于图像分割或平滑处理。 该函数将输入图像中的…...

现有的 Redis 分布式锁库(如 Redisson)提供了哪些便利?

现有的 Redis 分布式锁库&#xff08;如 Redisson&#xff09;相比于开发者自己基于 Redis 命令&#xff08;如 SETNX, EXPIRE, DEL&#xff09;手动实现分布式锁&#xff0c;提供了巨大的便利性和健壮性。主要体现在以下几个方面&#xff1a; 原子性保证 (Atomicity)&#xff…...

Linux nano命令的基本使用

参考资料 GNU nanoを使いこなすnano基础 目录 一. 简介二. 文件打开2.1 普通方式打开文件2.2 只读方式打开文件 三. 文件查看3.1 打开文件时&#xff0c;显示行号3.2 翻页查看 四. 文件编辑4.1 Ctrl K 复制 和 Ctrl U 粘贴4.2 Alt/Esc U 撤回 五. 文件保存与退出5.1 Ctrl …...

Caliper 负载(Workload)详细解析

Caliper 负载(Workload)详细解析 负载(Workload)是 Caliper 性能测试的核心部分,它定义了测试期间要执行的具体合约调用行为和交易模式。下面我将全面深入地讲解负载的各个方面。 一、负载模块基本结构 一个典型的负载模块(如 workload.js)包含以下基本结构: use strict;/…...

鸿蒙HarmonyOS 5军旗小游戏实现指南

1. 项目概述 本军旗小游戏基于鸿蒙HarmonyOS 5开发&#xff0c;采用DevEco Studio实现&#xff0c;包含完整的游戏逻辑和UI界面。 2. 项目结构 /src/main/java/com/example/militarychess/├── MainAbilitySlice.java // 主界面├── GameView.java // 游戏核…...

聚六亚甲基单胍盐酸盐市场深度解析:现状、挑战与机遇

根据 QYResearch 发布的市场报告显示&#xff0c;全球市场规模预计在 2031 年达到 9848 万美元&#xff0c;2025 - 2031 年期间年复合增长率&#xff08;CAGR&#xff09;为 3.7%。在竞争格局上&#xff0c;市场集中度较高&#xff0c;2024 年全球前十强厂商占据约 74.0% 的市场…...