Jmeter分布式压测

一、jmeter为什么要做分布式压测
jmeter本身的局限性
  • 一台压力机的 Jmeter 支持的线程数受限于 Jmeter 其本身的机制和硬件配置(内存、CPU等)是有限的
  • 由于 Jmeter 是 Java 应用,对 CPU 和内存的消耗较大,在需要模拟大量并发用户数时,单机很容易出现 JAVA 内存溢出的错误,导致测试脚本本身就有瓶颈
JVM 堆内存的局限性

Java 应用的 jvm 堆内存 heap 受压力机硬件限制,虽然我们可以调整堆内存大小

cmd 启用 Jmeter GUI 时,也会有提示

increase Java Heap to meet your test requirements: Modify current env variable HEAP="-Xms1g -Xmx1g -XX:MaxMetaspaceSize=256m" in the jmeter batch file

翻译:增加 Java 堆内存来满足测试的要求

但是单机无法支撑数以万计大并发,此时,需要多个压力机进行分布式压力测试,这样性能瓶颈就不会是我们的压力机了

联想场景
  • 测试 1000 线程并发的场景,但单机只能支持 200 并发无法达到1000
  • 通过分布式(5 台机器起)可以模拟 1000 并发
分布式压测

Jmeter 支持分布式压测,将需要模拟的大量并发用户数分发到多台压力机,使 Jmeter 拥有更大的负载量,满足真实业务场景(高并发场景)

分布式的最终目的
  • 确保压力机不会出现性能瓶颈
  • 在后面进行性能分析时,不需要考虑压力机是否会导致性能瓶颈的主要原因之一
二、分布式原理

把上面的动图完整看完,就懂了,原理如下:

  • Cnotroller 是控制机,Slaves 是多个压力机
  • 分布式测试中,Cnotroller 通过命令行将测试脚本分发给所有 Slave
  • Slave 不需要启动 Jmeter GUI,通过 CLI 模式执行测试
  • Slave 执行完后,会把结果回传给 Master
  • Master 收集所有 Slave 的结果并汇总成一个结果集

注意

  • 压力机也可以叫:负载机、代理机、执行机、肉鸡....各种各样的名字,但他们都是 Slave
  • Master 也可以执行测试脚本,也可以不执行只负责管理
三、分布式压测的前提条件已经配置
 
  1. 注意事项

  2. 1、保持Contorller和Slave机器的JDK、jmeter以及插件等配置版本一致;

  3. 2、如果测试数据有用到CSV或者其他方式进行参数化,需要将data在每台Slave上复制一份,且读取路径必须保持一致;

  4. 3、确保Contorller和Salve机器在同一个子网里面;

  5. 4、检查防火墙是否被关闭,端口是否被占用(防火墙会影响脚本执行和测试结构收集,端口占用会导致Slave机报错);

  6. 5、分布式测试中,通过远程启动代理服务器,默认查看结果树中的响应数据为空,只有错误信息会被报回;

  7. 6、如果并发较高,建议将Contorller机设置为只启动测试脚本和收集汇总测试结果,在配置文件里去掉Contorller机的IP;

1、修改Contorller配置

打开Contorller机下jmeter安装文件下的bin目录:jmeter.properties文件,搜索remote_hosts=127.0.0.1,将Slave机的IP和端口写在后面,比如:

remote_hosts=127.0.0.1:1099,172.16.6.90:1099,172.16.6.91:1099

其中172.16.6.90和172.16.6.90为Slave机的IP,每个Agent机之间用英文半角逗号隔开,修改保存。注意默认端口都为1099

切记不论从主机器都要修改:server.rmi.ssl.disable=true,并且去掉#,否则会报错误

2、负载机
  1. 首先安装好jdk和jmeter环境,具体见我的上一篇文章。然后打开配置文件 /bin/jmeter.properties 找到并取消这段配置的注释 server.rmi.ssl.disable=false ,false改成true。

 
  1. # Password of Trust store

  2. #server.rmi.ssl.truststore.password=changeit

  3. #

  4. # Set this if you don't want to use SSL for RMI

  5. server.rmi.ssl.disable=true # 改成true

  1. 输入命令:jmeter-server -Djava.rmi.server.hostname=172.16.2.114 ,启动 anget 节点。jmeter-server 后面的参数指定 agent 的 IP

3、启动jemter

启动jmeter后,设置线程组、配置元件、取样器、监听器等原件,点击“运行-远程启动”:

可以选择远程启动一个Slave机,或者选择远程全部启动,即可进行分布式测试了。 

 

总结:

感谢每一个认真阅读我文章的人!!!

作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助。

  1. 文档获取方式:

  2. 加入我的软件测试交流群:680748947免费获取~(同行大佬一起学术交流,每晚都有大佬直播分享技术知识点)

这份文档,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!

以上均可以分享,只需要你搜索vx公众号:程序员雨果,即可免费领取

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

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

相关文章

Instal IIS on Windows Server 2022 Datacenter

和以往版本一样,没有什么不同,So easy! WinR - ServerManager.exe 打开服务器管理器,点击【添加角色和功能】,选择自己想要的角色和功能。 一、开始之前:帮助说明,点击【下一步】;…

OS复习笔记ch5-2

引言 在上一篇笔记中,我们介绍到了进程同步和进程互斥,以及用硬件层面上的三种方法分别实现进程互斥。其实,软件层面上也有四种方法,但是这些方法大部分都存在着一些问题: “上锁”与“检查”是非原子操作&#xff0…

纯血鸿蒙APP实战开发——手写绘制及保存图片

介绍 本示例使用drawing库的Pen和Path结合NodeContainer组件实现手写绘制功能。手写板上完成绘制后,通过调用image库的packToFile和packing接口将手写板的绘制内容保存为图片,并将图片文件保存在应用沙箱路径中。 效果图预览 使用说明 在虚线区域手写…

Java反序列化-CC11链

前言 这条链子的主要作用是为了可以在 Commons-Collections 3.2.1 版本中使用,而且还是无数组的方法。这条链子适用于 Shiro550漏洞 CC11链子流程 CC2 CC6的结合体 CC2 这是CC2的流程图,我们取的是后面那三个链子,但是由于CC2 只能在 c…

硬盘惊魂!文件夹无法访问怎么办?

在数字时代,数据的重要性不言而喻。然而,有时我们会遇到一个令人头疼的问题——文件夹提示无法访问。当你急需某个文件夹中的文件时,却被告知无法打开,这种感受真是难以言表。今天,我们就来深入探讨这个问题&#xff0…

下一代Nginx? OpenNjet 的入门实践

何为 OpenNjet ? OpenNJet 应用引擎是基于 NGINX 的面向互联网和云原生应用提供的运行时组态服务程序,作为底层引擎,OpenNJet 实现了NGINX 云原生功能增强、安全加固和代码重构,利用动态加载机制可以实现不同的产品形态&#xff0…

机器学习第二天(监督学习,无监督学习,强化学习,混合学习)

1.是什么 基于数据寻找规律从而建立关系,进行升级,如果是以前的固定算式那就是符号学习了 2.基本框架 3.监督学习和无监督式学习: 监督学习:根据正确结果进行数据的训练; 在监督式学习中,训练数据包括输…

Python urllib 爬虫入门(1)

本文主要为Python urllib类库函数和属性介绍及一些简单示例。 目录 urllib爬取网页 简单示例 写入文件 其他读取方法 readline函数 readlines函数 response属性 当前环境信息 返回状态码 返回url地址 对url进行编码与解码 写入文件 总结 urllib爬取网页 通过pyth…

automa警惕通过点击元素打开新的标签页,因为你可能会被他蒙蔽!

大家好,我是大胡子,专注于研究RPA实战与解决方案。 我们经常用到automa里面的【点击元素】组件,但要警惕通过点击元素打开新的标签页,例如下面这个场景,点击公众号的图文消息,之后,要自动输入标…

HCIP的学习(13)

第五章,重发布和路由策略 重发布 ​ 在路由协议的边界设备上,将某一种路由协议的路由信息引入到另一种路由协议中,这个操作被称为路由引入或者路由重分发。----技术本质为重发布。 条件 必须存在ASBR设备(路由边界设备&#x…

《QT实用小工具·五十九》随机图形验证码,带有一些可人的交互与动画

1、概述 源码放在文章末尾 该项目实现了可交互的动画验证码控件,趣味性十足: 字符变换动画 噪音动画 可拖动交互 项目demo演示如下所示: 项目部分代码如下所示: #ifndef CAPTCHAMOVABLELABEL_H #define CAPTCHAMOVABLELABEL…

【Pytorch】6.torch.nn.functional.conv2d的使用

阅读之前应该先了解基础的CNN网络的逻辑 conv2d的作用 是PyTorch中用于执行二维卷积操作的函数。它的作用是对输入数据进行二维卷积操作,通常用于图像处理和深度学习中的卷积神经网络(CNN)模型。 conv2d的使用 我们先查看一下官方文档 inpu…

nn.TransformerEncoderLayer详细解释,使用方法!!

nn.TransformerEncoderLayer nn.TransformerEncoderLayer 是 PyTorch 的 torch.nn 模块中提供的一个类,用于实现 Transformer 编码器的一个单独的层。Transformer 编码器层通常包括一个自注意力机制和一个前馈神经网络,中间可能还包含层归一化&#xff…

AutoTable, Hibernate自动建立表替代方案

痛点 之前一直使用JPA为主要ORM技术栈,主要是因为Mybatis没有实体逆向建表功能。虽然Mybatis有从数据库建立实体,但是实际应用却没那么美好:当实体变更时,往往不会单独再建立一个数据库重新生成表,然后把表再逆向为实…

matplotlib和pandas与numpy

1.matplotlib介绍 一个2D绘图库; 2.Pandas介绍: Pandas一个分析结构化数据的工具; 3.NumPy 一个处理n纬数组的包; 4.实践:绘图matplotlip figure()生成一个图像实例 %matplotlib inline:图形直接在…

(三)JSP教程——JSP动作标签

JSP动作标签 用户可以使用JSP动作标签向当前输出流输出数据&#xff0c;进行页面定向&#xff0c;也可以通过动作标签使用、修改和创建对象。 <jsp:include>标签 <jsp:include>标签将同一个Web应用中静态或动态资源包含到当前页面中。资源可以是HTML、JSP页面和文…

5月6(信息差)

&#x1f30d;一次预测多个token&#xff0c;Meta新模型推理加速3倍&#xff0c;编程任务提高17% https://hub.baai.ac.cn/view/36857 &#x1f384; LeetCode 周赛超越 80% 人类选手&#xff0c;推理性能超 Llama3-70B。 ✨ 我国量子计算机实现“四算合一” 实现通算、…

鸿蒙OpenHarmony南向:【Hi3516标准系统入门(命令行方式)】

Hi3516标准系统入门&#xff08;命令行方式&#xff09; 注意&#xff1a; 从3.2版本起&#xff0c;标准系统不再针对Hi3516DV300进行适配验证&#xff0c;建议您使用RK3568进行标准系统的设备开发。 如您仍然需要使用Hi3516DV300进行标准系统相关开发操作&#xff0c;则可能会…

一加12/11/10/Ace2/Ace3手机上锁回锁BL无限重启黑屏9008模式救砖

一加12/11/10/Ace2/Ace3手机官方都支持解锁BL&#xff0c;搞机的用户也比较多&#xff0c;相对于其他品牌来说&#xff0c;并没有做出限制&#xff0c;这也可能是搞机党最后的救命稻草。而厌倦了root搞机的用户&#xff0c;就习惯性回锁BL&#xff0c;希望彻底变回官方原来的样…

数字旅游以科技创新为核心:推动旅游服务的智能化、精准化、个性化,为游客提供更加贴心、专业、高效的旅游服务

目录 一、引言 二、数字旅游以科技创新推动旅游服务智能化 1、智能化技术的应用 2、提升旅游服务的效率和质量 三、数字旅游以科技创新推动旅游服务精准化 1、精准化需求的识别与满足 2、精准化营销与推广 四、数字旅游以科技创新推动旅游服务个性化 1、个性化服务的创…