性能测试工具Jmeter分布式运行

性能测试工具JMeter的分布式执行是一种用于增强压力测试能力的技术方案,它允许用户通过多台机器来共同完成同一个测试计划的执行。这种方式特别适用于需要模拟成百上千甚至上万用户并发访问的情况,当单台机器由于硬件资源(如CPU、内存、网络I/O等)限制无法满足高并发需求时,分布式执行可以有效地解决这个问题。

分布式执行原理

在JMeter的分布式架构中,通常会有一台机器作为控制机(Controller或Master),负责管理和协调整个测试过程;其他参与测试的机器则被称为执行机(Agent或Slave)。

具体来说:

控制机:安装有JMeter客户端,并且配置了与所有执行机通信所需的设置。它可以是Windows或Linux系统,但建议使用独立于执行机之外的机器以避免资源竞争。

执行机:同样安装了JMeter软件,并且根据控制机发送过来的指令执行相应的测试任务。这些机器不需要启动GUI界面,而是以命令行模式运行,从而减少不必要的资源消耗。

通信机制:控制机和执行机之间通过RMI(Remote Method Invocation)协议进行通信,默认情况下使用端口1099。为了保证安全性和效率,可以在jmeter.properties文件中禁用SSL加密或者自定义端口号。

运行模式如下图所示:

图片

Master 端和Slave 端通过RMI(Remote Method Invocation)的模式通信,Master控制场景的配置,执行及结果收集,Slave负责产生负载,把测试结果回传给Master。

Jmeter分布执行过程大致如下:

1> Slave 端启动(%JMETER_HOME%/bin/jmeter-server).

2>Master 端启动执行。Master端解析测试计划 Hash Tree,从配置文件中读取Slave 端地址(可以是N个,N>=1),建立连接。例如参数文件,这些文件不会自动发送Slave端的,需要用户自己存放到Slave端。

3>Slave端连接到Hash Tree 与启动命令行,运行测试计划,并把测试结果返回给Master端;每个Slave端上运行的测试计划完全一样,例如,在Master端上设置的线程数为100,那么总线程数为100*N,其中N 为Slave的个数。

配置步骤

要实现JMeter的分布式执行,首先需要确保所有涉及的机器都安装了相同版本的JDK和JMeter,并且正确设置了环境变量。接着按照以下步骤操作:

修改配置文件:在每台执行机上的bin/jmeter.properties文件中添加如下配置项:

server.rmi.ssl.disable=true // 禁用SSL

server_port=指定端口 // 设置监听端口,例如1888

server.rmi.localport=指定端口 // 设置本地RMI端口,保持一致

启动服务:进入JMeter安装目录下的bin文件夹,执行jmeter-server.bat(Windows)或./jmeter-server(Linux)命令来启动远程服务器实例。

配置控制机:编辑控制机上的bin/jmeter.properties文件,在其中加入所有执行机的信息,格式为remote_hosts=IP地址:端口号,IP地址:端口号...。例如:remote_hosts=192.168.1.102:1888,192.168.1.103:1888。

启动测试:打开JMeter GUI界面,加载要执行的测试计划(.jmx文件),然后选择“运行”->“远程启动”,可以选择单独启动某一台执行机,也可以点击“远程全部启动”让所有配置好的执行机同时开始工作。

使用SSL

Jmeter从4.0版本以后,RMI的默认传输机制将使用SSL,因此我们要配置密钥和证书。解决方式有两种,一种是忽略SSL,另外一种方式生成密钥和证书,然后进行配置。

%JMETER_HOME%/bin/ 目录下有create-rmi-keystor.bat,create-rmi-keystor.sh 两个文件分别为windows 系统和Linux系统下生成密钥证书。

图片

create-rmi-keystor.bat 支持windows系统生成密钥和证书

图片

图片

Windows系统下生成的证书。

create-rmi-keystor.sh 支持Linux系统生成密钥和证书。

把生成的证书拷贝到其它待用的机器上,配置不做任何修改,保持默认即可。

启动Slave端,在Linux系统下运行%JMETER_HOME%/bin/jmeter-server,在windows系统下运行Jmeter-server.bat。默认的监听端口号1099,如果需要修改,则在jmeter.properties中设置的server_prot=[端口],同时在Master端的Jmeter.properties 文件中设置remote_hosts=server:[端口]。

注意事项

所有机器应该处于同一局域网内,并且关闭防火墙或开放必要的端口以便于通信。

如果使用CSV文件或其他外部数据源进行参数化,则需确保这些文件存在于每个执行机相同路径下。

为了避免潜在的问题,最好保证所有参与测试的机器拥有相同的JMeter版本及插件配置。

通过上述方法可以成功搭建起一个基于JMeter的分布式压测环境,这对于评估Web应用或其他服务在大规模并发条件下的表现具有重要意义。此外,随着技术的发展,一些第三方平台也提供了对JMeter分布式部署的支持和服务,进一步简化了这一过程。

阅读后若有收获,不吝关注,分享,在看等操作!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/66000.shtml

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

相关文章

弥散张量分析开源软件 DSI Studio 简体中文汉化版可以下载了

网址: (63条消息) DSIStudio简体中文汉化版(2022年7月)-算法与数据结构文档类资源-CSDN文库

移动云自研云原生数据库入围国采!

近日,中央国家机关2024年度事务型数据库软件框架协议联合征集采购项目产品名单正式公布,移动云自主研发的云原生数据库产品顺利入围。这一成就不仅彰显了移动云在数据库领域深耕多年造就的领先技术优势,更标志着国家权威评审机构对移动云在数…

在vscode中使用R-1

参考我的上一篇博客: https://blog.csdn.net/weixin_62528784/article/details/145092632?spm1001.2014.3001.5501 这篇内容实际上就是上一篇博客的后续承接,既然都在vscode的jupyter中使用R了,实际上其实也能够直接在vscode中原生使用R的编…

【Block总结】掩码窗口自注意力 (M-WSA)

摘要 论文链接:https://arxiv.org/pdf/2404.07846 论文标题:Transformer-Based Blind-Spot Network for Self-Supervised Image Denoising Masked Window-Based Self-Attention (M-WSA) 是一种新颖的自注意力机制,旨在解决传统自注意力方法在…

【Linux】统信UOS服务器安装MySQL8.0(RPM)

目录 一、下载安装包 二、安装MySQL 2.1hive适配 2.2ranger适配 3.2DolphinScheduler适配 一、下载安装包 官网下载安装包:MySQL :: MySQL Downloads 选择社区版本下载 点击MySQL Community Server 选择对应系统的MySQL版本号 统信1060a 操作系统对应 redhat8…

Jenkins简单的安装运行

一、下载 官网下载:https://www.jenkins.io/download/ 清华大学开源软件镜像站:https://mirrors.tuna.tsinghua.edu.cn/jenkins/ 官网资料丰富,介绍了各种平台安装以及下载。安装简单,按照说明来就行。下面我介绍一个非常简单的…

【CSS】HTML页面定位CSS - position 属性 relative 、absolute、fixed 、sticky

目录 relative 相对定位 absolute 绝对定位 fixed 固定定位 sticky 粘性定位 position:relative 、absolute、fixed 、sticky (四选一) top:距离上面的像素 bottom:距离底部的像素 left:距离左边的像素…

Ubuntu中双击自动运行shell脚本

方法1: 修改文件双击反应 参考: https://blog.csdn.net/miffywm/article/details/103382405 chmod x test.sh鼠标选中待执行文件,在窗口左上角edit菜单中选择preference设计双击执行快捷键,如下图: 方法2: 设置一个应用 参考: https://blo…

从0开始学习搭网站的第一天

前言,以下内容学习自mdn社区,感兴趣的朋友可以直接去看原文章web技术 目录 web机制互联网是怎么运作的网站服务器是什么什么是URL?什么是web服务器?什么是域名什么是超链接什么是网页DOMgoole浏览器开发者工具 web机制 互联网是怎…

黑马linux笔记(03)在Linux上部署各类软件 MySQL5.7/8.0 Tomcat(JDK) Nginx RabbitMQ

文章目录 实战章节:在Linux上部署各类软件tar -zxvf各个选项的含义 为什么学习各类软件在Linux上的部署 一 MySQL数据库管理系统安装部署【简单】MySQL5.7版本在CentOS系统安装MySQL8.0版本在CentOS系统安装MySQL5.7版本在Ubuntu(WSL环境)系统…

[Transformer] The Structure of GPT, Generative Pretrained Transformer

The Structure of Generative Pretrained Transformer Reference: The Transformer architecture of GPT models How GPT Models Work

浅谈云计算04 | 云基础设施机制

探秘云基础设施机制:云计算的基石 一、云基础设施 —— 云计算的根基![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/1fb7ff493d3c4a1a87f539742a4f57a5.png)二、核心机制之网络:连接云的桥梁(一)虚拟网络边界&#xff…

解锁 JMeter 的 ForEach Controller 高效测试秘籍

各位小伙伴们,今天咱就来唠唠 JMeter 里超厉害的 “宝藏工具”——ForEach Controller,它可是能帮咱们在性能测试的江湖里 “大杀四方” 哦! 一、ForEach Controller 是啥 “神器” 想象一下,你手头有一串神秘钥匙,每…

sosadmin相关命令

sosadmin命令 以下是本人翻译的官方文档,如有不对,还请指出,引用请标明出处。 原本有个对应表可以跳转的,但是CSDN的这个[](#)跳转好像不太一样,必须得用html标签,就懒得改了。 sosadmin help 用法 sosadm…

【WPS】【WORDEXCEL】【VB】实现微软WORD自动更正的效果

1. 代码规范方面 添加 Option Explicit:强制要求显式声明所有变量,这样可以避免因变量名拼写错误等情况而出现难以排查的逻辑错误,提高代码的健壮性。使用 On Error GoTo 进行错误处理:通过设置错误处理机制,当代码执行…

Kafka 分区管理

分区是主题的子集,每个主题可以被分割成多个分区,一个分区有一个主副本(Leader)及一个或多个从(Follower)副本。分区允许将数据分布在多个broker上,这样可以提高数据的处理能力、并行性及可靠性…

【论文阅读+复现】High-fidelity Person-centric Subject-to-Image Synthesis

以人物为中心的主体到图像的高保真合成,CVPR2024 code:CodeGoat24/Face-diffuser: [CVPR2024] Official implementation of High-fidelity Person-centric Subject-to-Image Synthesis. paper:2311.10329 背景 研究问题:这篇文…

详解如何自定义 Android Dex VMP 保护壳

版权归作者所有,如有转发,请注明文章出处:https://cyrus-studio.github.io/blog/ 前言 Android Dex VMP(Virtual Machine Protection,虚拟机保护)壳是一种常见的应用保护技术,主要用于保护 And…

基于华为atlas的重车(满载)空车(空载)识别

该教程主要是想摸索出华为atlas的基于ACL的推理模式。最终实现通过煤矿磅道上方的摄像头,识别出车辆的重车(满载)、空车(空载)情况。本质上是一个简单的检测问题。 但是整体探索过程比较坎坷,Tianxiaomo的…

《零基础Go语言算法实战》【题目 2-25】goroutine 的执行权问题

《零基础Go语言算法实战》 【题目 2-25】goroutine 的执行权问题 请说明以下这段代码为什么会卡死。 package main import ( "fmt" "runtime" ) func main() { var i byte go func() { for i 0; i < 255; i { } }() fmt.Println("start&quo…