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.pswp.cn/news/908339.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Kafka入门-生产者

生产者 生产者发送流程&#xff1a; 延迟时间为0ms时&#xff0c;也就意味着每当有数据就会直接发送 异步发送API 异步发送和同步发送的不同在于&#xff1a;异步发送不需要等待结果&#xff0c;同步发送必须等待结果才能进行下一步发送。 普通异步发送 首先导入所需的k…

分类预测 | Matlab实现CNN-LSTM-Attention高光谱数据分类

分类预测 | Matlab实现CNN-LSTM-Attention高光谱数据分类 目录 分类预测 | Matlab实现CNN-LSTM-Attention高光谱数据分类分类效果功能概述程序设计参考资料 分类效果 功能概述 代码功能 该MATLAB代码实现了一个结合CNN、LSTM和注意力机制的高光谱数据分类模型&#xff0c;核心…

gemini和chatgpt数据对比:谁在卷性能、价格和场景?

先把结论“剧透”给赶时间的朋友&#xff1a;顶配 Gemini Ultra/2.5 Pro 在纸面成绩上普遍领先&#xff0c;而 ChatGPT 家族&#xff08;GPT-4o / o3 / 4.1&#xff09;则在延迟、生态和稳定性上占优。下面把核心数据拆开讲&#xff0c;方便你对号入座。附带参考来源&#xff0…

代码训练LeetCode(23)随机访问元素

代码训练(23)LeetCode之随机访问元素 Author: Once Day Date: 2025年6月5日 漫漫长路&#xff0c;才刚刚开始… 全系列文章可参考专栏: 十年代码训练_Once-Day的博客-CSDN博客 参考文章: 380. O(1) 时间插入、删除和获取随机元素 - 力扣&#xff08;LeetCode&#xff09;力…

C++面试5——对象存储区域详解

C++对象存储区域详解 核心观点:内存是程序员的战场,存储区域决定对象的生杀大权!栈对象自动赴死,堆对象生死由你,全局对象永生不死,常量区对象只读不灭。 一、四大地域生死簿 栈区(Stack) • 特点:自动分配释放,速度极快(类似高铁进出站) • 生存期:函数大括号{}就…

STM32 智能小车项目 L298N 电机驱动模块

今天开始着手做智能小车的项目了 在智能小车或机器人项目中&#xff0c;我们经常会听到一个词叫 “H 桥电机驱动”&#xff0c;尤其是常见的 L298N 模块&#xff0c;就是基于“双 H 桥”原理设计的。那么&#xff0c;“H 桥”到底是什么&#xff1f;为什么要用“双 H 桥”来驱动…

python项目如何创建docker环境

这里写自定义目录标题 python项目创建docker环境docker配置国内镜像源构建一个Docker 镜像验证镜像合理的创建标题&#xff0c;有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPant…

MySQL-多表关系、多表查询

一. 一对多(多对一) 1. 例如&#xff1b;一个部门下有多个员工 在数据库表中多的一方(员工表)、添加字段&#xff0c;来关联一的一方(部门表)的主键 二. 外键约束 1.如将部门表的部门直接删除&#xff0c;然而员工表还存在其部门下的员工&#xff0c;出现了数据的不一致问题&am…

【 HarmonyOS 5 入门系列 】鸿蒙HarmonyOS示例项目讲解

【 HarmonyOS 5 入门系列 】鸿蒙HarmonyOS示例项目讲解 一、前言&#xff1a;移动开发声明式 UI 框架的技术变革 在移动操作系统的发展历程中&#xff0c;UI 开发模式经历了从命令式到声明式的重大变革。 根据华为开发者联盟 2024 年数据报告显示&#xff0c;HarmonyOS 设备…

【SSM】SpringMVC学习笔记7:前后端数据传输协议和异常处理

这篇学习笔记是Spring系列笔记的第7篇&#xff0c;该笔记是笔者在学习黑马程序员SSM框架教程课程期间的笔记&#xff0c;供自己和他人参考。 Spring学习笔记目录 笔记1&#xff1a;【SSM】Spring基础&#xff1a; IoC配置学习笔记-CSDN博客 对应黑马课程P1~P20的内容。 笔记2…

借助 Spring AI 和 LM Studio 为业务系统引入本地 AI 能力

Spring AI 1.0.0-SNAPSHOTLM Studio 0.3.16qwen3-4b 参考 Unable to use spring ai with LMStudio using spring-ai openai module Issue #2441 spring-projects/spring-ai GitHub LM Studio 下载安装 LM Studio下载 qwen3-4b 模型。对于 qwen3 系列模型&#xff0c;测试…

C++学习-入门到精通【13】标准库的容器和迭代器

C学习-入门到精通【13】标准库的容器和迭代器 目录 C学习-入门到精通【13】标准库的容器和迭代器一、标准模板库简介1.容器简介2.STL容器总览3.近容器4.STL容器的通用函数5.首类容器的通用typedef6.对容器元素的要求 二、迭代器简介1.使用istream_iterator输入&#xff0c;使用…

Vue Router的核心实现原理深度解析

1. Vue Router的基本架构 Vue Router的核心功能是实现前端路由&#xff0c;即在不重新加载页面的情况下更改应用的视图。它的基本架构包括&#xff1a; 路由配置&#xff1a;定义路径与组件的映射关系路由实例&#xff1a;管理路由状态和提供导航方法路由视图&#xff1a;渲染…

设计模式——状态设计模式(行为型)

摘要 状态设计模式是一种行为型设计模式&#xff0c;核心在于允许对象在内部状态改变时改变行为。它通过状态对象封装不同行为&#xff0c;使状态切换灵活清晰。该模式包含环境类、抽象状态类和具体状态类等角色&#xff0c;具有避免大量分支判断、符合单一职责和开闭原则等特…

C++ 观察者模式:设计与实现详解

一、引言 在现代软件开发中,组件间的交互与通信是系统设计的核心挑战之一。观察者模式(Observer Pattern)作为一种行为设计模式,提供了一种优雅的解决方案,用于实现对象间的一对多依赖关系。本文将深入探讨 C++ 中观察者模式的设计理念、实现方式及其应用场景。 二、观察…

Windows 账号管理与安全指南

Windows 账号管理与安全指南 概述 Windows 账号管理是系统安全的基础&#xff0c;了解如何正确创建、管理和保护用户账户对于系统管理员和安全专业人员至关重要。本文详细介绍 Windows 系统中的账户管理命令、隐藏账户创建方法以及安全防护措施。 基础账户管理命令 net use…

[蓝桥杯]摆动序列

摆动序列 题目描述 如果一个序列的奇数项都比前一项大&#xff0c;偶数项都比前一项小&#xff0c;则称为一个摆动序列。即 a2i<a2i−1,a2i1 >a2ia2i​<a2i−1​,a2i1​ >a2i​。 小明想知道&#xff0c;长度为 mm&#xff0c;每个数都是 1 到 nn 之间的正整数的…

Python 网络编程 -- WebSocket编程

作者主要是为了用python构建实时网络通信程序。 概念性的东西越简单越好理解,因此,下面我从晚上摘抄的概念 我的理解。 什么是网络通信? 更确切地说&#xff0c;网络通信是两台计算机上的两个进程之间的通信。比如&#xff0c;浏览器进程和新浪服务器上的某个Web服务进程在通…

GM DC Monitor如何实现TCP端口状态监控-操作分享

本节讲解如何通过现有指标提取监控脚本制作自定义的TCP端口监控指标 一、功能介绍 通过提取已有的监控指标的监控命令&#xff0c;来自定义TCP端口的监控指标。 二、配置端口监控 1&#xff09;定位监控脚本 确定脚本及参数如下&#xff1a; check_protocol_tcp.pl --plug…

LabVIEW与Modbus/TCP温湿度监控系统

基于LabVIEW 开发平台与 Modbus/TCP 通信协议&#xff0c;设计一套适用于实验室环境的温湿度数据采集监控系统。通过上位机与高精度温湿度采集设备的远程通信&#xff0c;实现多设备温湿度数据的实时采集、存储、分析及报警功能&#xff0c;解决传统人工采集效率低、环境适应性…