jmeter分布式(四)
一、gui
jmeter的gui主要用来调试脚本
1、先gui创建脚本
先做一个脚本
演示:如何做混合场景的脚本?
用211的业务比例
①启动数据库服务
数据库服务:包括mysql、redis
mysql端口默认3306
netstat -lntp | grep 3306
处于监听状态,6379是redis的默认端口
netstat -lntp | grep 6379
项目服务端口18089
netstat -lntp | grep 18089
②访问接口文档swagger
211可以转换出两个压测的业务
一个是注册,一个是注册登录添加商品
两个分别是50%
③添加线程组
jmeter—添加线程组–添加–线程–用户–线程组
转换出两个压测业务
④添加吞吐量控制器
jmeter—添加-逻辑控制器–吞吐量控制器
转换出两个压测业务.
第一个压测业务是包括注册、登录、添加商品
第二个压测时业务是注册

各自50%
⑤添加取样器http请求
jmeter—添加-取样器–http请求
转换出两个压测业务
第一个压测业务是包括注册、登录、添加商品


第二个业务是注册
根据注册swagger、来写,入参
一般插入id可以不用填写
addtime也可以不用填写
复制粘贴入参数据到jmeter中
路径根据url



⑥添加http信息头管理器、
都是传json


⑦添加http请求默认值
根据接口文档填写ip和端口


⑧添加监听器,查看结果树

⑨添加断言
断言最好都添加上


二、非gui
-n非gui模式执行jmeter
-t执行测试文件所在的位置,指定要运行jmeter的脚本,不在当前路径,需要将完整路径写出
-l指定生成的结果文件,即就是jtl文件
-e测试结束后,生成测试报告
-o指定测试报告html的存放位置
-r远程启动
1.单机压力机
①申请压力机
linux压力机上安装jdk、jmeter
在usr/local下安装
直接将window上的jmeter上传到linux压力机上,因为调试脚本涉及到的插件也可用上

②脚本上传到压力机
注:如果脚本涉及到csv参数文件,需要将csv’参数文件上传至linux下jmeter的bin目录下
上传前需要将聚合报告,监听器禁用
5个线程,每30s加一个,即就是150
持续时间需要大于Rang up时间150,再运行50秒,就设置200

jmeter上传成功后验证一下jmeter版本、是否可用

③初始化
有两个地方
第一个,存放测试脚本的路径需要创建一个存放html报告的目录

在运行脚本之前,res目录下必须为空
第二,再不考虑存量数据的情况下,将数据库表中的数据清理

④执行脚本

⑤查看结果
结果
在13s内完成548次请求


打开聚合报告
ko失败的请求数量

resopntime响应时间

tps

怎么查看jtl文件?
jtl可以在任意监听器打开,如查看结果树、聚合报告、tps、响应时间。
如在聚合报告中打开,点击浏览


如tps、响应时间
先看tps
添加tps
点击浏览




响应时间

2.分布式
有的时候一个压力机达不到目标,就需要用到分布式
毕竟单机资源有限,比较难以支持较大的并发,单机的压力机也是有瓶颈
2.1分布式原理
官网:https://jmeter.apache.org/usermanual/jmeter_distributed_testing_step_by_step.html
一台服务机作为控制机
其余机器都是作为负载机
targe请求的服务
控制器通过发送信号远程控制负载机的启动和停止,同时收集负载机数据及汇总
负载机主要是启动线程来访问服务器,及被压测服务器target
一般在worker一般是启动jmeter-server控制机远程控制负载机,负载机启动线程请求target获取数据后回传给控制机
分布式时脚本放在哪里?
一个controller多个worker
执行非gui时,脚本传到服务器上,现在是分布式,脚本应该传到哪里?
会将脚本传到controller控制机上,执行时会把脚本发到每个负载机即每个worker,负载获取到脚本后开始执行脚本,执行完后将数据传给控制机进行汇总。
2.2分布式压测注意事项

防火墙需要进行关闭,防火墙若不关闭,端口需要打开。
所有的客户端要在同一子网上。
确保jmeter可以访问server
确保jmeter与java版本一样
禁用ssl
2.3环境准备
需要3个虚拟机
用 181做Controller(控制机)
用182,183做Worker (负载机)
同时这三个虚拟机都要安装jdk,jmeter




查看jdk版本

三台虚拟机安装jmeter
本机的jmeter传到虚拟机的usr/local目录下
上传完后查看jmeter版本

2.4 分布式配置
①Worker
182、182
先备份配置文件jmeter.properties

server_port可以修改,也可以不修改默认为1099

禁用ssl
server.rmi.ssl.disable=false,将false改为true

启动jemter
./jmeter-server

在182上看端口是否处于监听状态

验证
控制机telnet负载机,看端口通不通


②Controller
配置控制机前先在window上的jmeter上进行调试
win:用于调试
先备份配置文件jmeter.properties

默认是本机作为负载机
现在的负载机是远程负载机,将remote_hosts=127.0.0.1改成remote_hosts=192.168.117.182:1099
这里必须写远程负载机的ip和端口,多个就以逗号分隔


禁用ssl
将server.rmi.ssl.disable=false改成server.rmi.ssl.disable=true

先通过本机调试一下
jmeter重启一下,重新读取配置文件

在window上调试完后就去linux下进行配置
181上进行配置
先备份配置文件jmeter.properties

现在的负载机是远程负载机,将remote_hosts=127.0.0.1改成remote_hosts=192.168.117.182:1099
这里必须写远程负载机的ip和端口,多个就以逗号分隔


server.rmi.ssl.disable=false
将server.rmi.ssl.disable=false改为server.rmi.ssl.disable=true

脚本传到控制机上,会自动将脚本分发到各个负载机上。
单独的测试单场景登录

上传完脚本、执行脚本
通过远程负载去进行执行
/usr/local/apache-jmeter-5.1.1/bin/jmeter -n -r -t test.jmx

每个work负载机(压力机)5个线程,到总的控制机汇总10个线程

环境准备
两个虚拟机。1个master,两个slave,Windows本机作为1个master,slave就用虚拟机。
原理:https://jmeter.apache.org/usermanual/jmeter_distributed_testing_step_by_step.html
出现的问题:
java.rmi.RemoteException: Cannot start. localhost.localdomain is a loopback address
Created remote object: UnicastServerRef2 [liveRef: [endpoint:127.0.0.1:43474,objID:[-5a8dd143:17e2852fe88:-7fff, 3673082414768940798]]]
Server failed to start: java.rmi.RemoteException: Cannot start. localhost.localdomain is a loopback address.
An error occurred: Cannot start. localhost.localdomain is a loopback address.

异常信息:服务器启动异常:java远程方法调用抛出异常:无法启动服务。localhost.localdomain是一个本地环回地址
通过hostname命令获取到的主机名是localhost
通过命令cat /etc/hosts查看hosts配置,localhost localhost.localdomain localhost4…指向的是127.0.0.1

解决方法:
指定远程服务器主机的IP地址(rmi.server.hostname)
通过终端命令指定来启动
./jmeter-server -Djava.rmi.server.hostname=192.168.2.2


相关文章:
jmeter分布式(四)
一、gui jmeter的gui主要用来调试脚本 1、先gui创建脚本 先做一个脚本 演示:如何做混合场景的脚本? 用211的业务比例 ①启动数据库服务 数据库服务:包括mysql、redis mysql端口默认3306 netstat -lntp | grep 3306处于监听状态…...
如何解决手机游戏因IP代理被封禁无法正常游戏的问题?
在当前的网络环境下,许多手机游戏为了维护游戏的公平性和安全性,会采取措施对使用IP代理的玩家进行封禁,导致他们无法正常访问游戏。这种情况对于一些需要使用IP代理的用户来说可能显得很棘手,但实际上有几种技术性的解决方案可以…...
windows10 安装Anaconda
文章目录 1. 下载2. 安装3. 配置环境变量4. 检查是否安装成功 1. 下载 官网下载 https://www.anaconda.com/download 下载的最新版本,要求python的版本也高一些 清华大学开源软件镜像站 https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/ 所有版本在这个网…...
[图解]SysML和EA建模住宅安全系统-14-黑盒系统规约
1 00:00:02,320 --> 00:00:07,610 接下来,我们看下一步指定黑盒系统需求 2 00:00:08,790 --> 00:00:10,490 就是说,把这个系统 3 00:00:11,880 --> 00:00:15,810 我们的目标系统,ESS,看成黑盒 4 00:00:18,030 --> …...
frp内网穿透xtcp安全点对点p2p部署记录打洞失败解决方法
环境 一、有公网IP、nas主机(需要穿透里面的服务)、安卓手机、frps-0.58.1、frpc-0.59.0(群晖NAS套件)、安卓版frpc-0.56.0 二、两端frpc必须要有一端nat网络类型不是非对称nat 开始 有公网的主机上配置frps.toml bindPort 7000nas主机端frpc.toml配…...
C++基础篇(2)
目录 前言 1.缺省参数 2.函数重载 2.1函数重载的基本规则 编辑2.2注意事项 2.3 重载解析(Overload Resolution)--补充内容 3.引用 3.1引用的概念和定义 3.2引用的特性 3.3引用的使用 3.4const引用 4.指针和引用的关系 结束语 前言 上节小编…...
c++ primer plus 第16章string 类和标准模板库,16.1.3 使用字符串
c primer plus 第16章string 类和标准模板库,16.1.3 使用字符串 c primer plus 第16章string 类和标准模板库,16.1.3 使用字符串 文章目录 c primer plus 第16章string 类和标准模板库,16.1.3 使用字符串16.1.3 使用字符串程序清单16.3 hangman.cpp 16.1.3 使用字符串 现在&a…...
使用mybatis的statementHander拦截器监控表和字段并发送钉钉消息
新建mybatis的statementHander拦截器拦截器 类 面试题: 2.实现 解析Sql时引入JSqlParser JSqlParser 是一个 SQL 语句解析器。 它将 SQL转换为可遍历的 Java 类层次结构。 <dependency><groupId>com.github.jsqlparser</groupId><artifac…...
信贷系统——基础信贷概念
摘要 信贷是金融领域中的一个重要概念,指的是金融机构(如银行、信用合作社等)向个人、企业或政府提供资金的过程。在信贷过程中,金融机构向借款人提供资金,借款人则承诺在未来的某个时间点按照约定的条件和利率偿还借款。这种借款通常是在合同中明确约定的,包括贷款金额、…...
分页查询及其拓展应用案例
分页查询 分页查询是处理大量数据时常用的技术,通过分页可以将数据分成多个小部分,方便用户逐页查看。SQLAlchemy 提供了简单易用的方法来实现分页查询。 本篇我们也会在最终实现这样的分页效果: 1. 什么是分页查询 分页查询是将查询结果按照…...
【UE5.1】NPC人工智能——02 NPC移动到指定位置
效果 步骤 1. 新建一个蓝图,父类选择“AI控制器” 这里命名为“BP_NPC_AIController”,表示专门用于控制NPC的AI控制器 2. 找到我们之前创建的所有NPC的父类“BP_NPC” 打开“BP_NPC”,在类默认值中,将“AI控制器类”一项设置为“…...
有关电力电子技术的一些相关仿真和分析:⑤交-直-交全桥逆变+全波整流结构电路(MATLAB/Siumlink仿真)
全桥逆变+全波整流结构 参数:Vin=500V, Vo=200V, T=2:1:1, RL=10Ω, fs=100kHz, L=1mH, C=100uF (1)给定输入电压,输出电压和主电路参数,仿真研究电路工作原理,分析工作时序; (2)调节负载电阻,实现电流连续和断续,并仿真验证; (3)调节占空比,分析占空比与电…...
记录一次Android推流、录像踩坑过程
背景: 按照需求,需要支持APP在手机息屏时进行推流、录像。 技术要点: 1、手机在息屏时能够打开camera获取预览数据 2、获取预览数据时进行编码以及合成视频 一、息屏时获取camera预览数据: ①Camera.setPreviewDisplay(SurfaceH…...
VsCode 与远程服务器 ssh免密登录
首先配置信息 加入下列信息 Host qb-zn HostName 8.1xxx.2xx.3xx User root ForwardAgent yes Port 22 IdentityFile ~/.ssh/id_rsa 找到自己的公钥,不带pub是私钥,打死都不能给别人。复制公钥 拿到公钥后,来到远程服务器 vim ~/.ss…...
7/13 - 7/15
vo.setId(rs.getLong("id"))什么意思? vo.setId(rs.getLong("id")); 这行代码是在Java中使用ResultSet对象(通常用于从数据库中检索数据)获取一个名为"id"的列,并将其作为long类型设置为一个对象…...
烟雾监测与太阳能源:实验装置在其中的作用
太阳光在烟雾中的散射效应研究实验装置是一款模拟阳光透过烟雾环境的设备。此装置能帮助探究阳光在烟雾中的传播特性、散射特性及其对阳光的影响。 该装置主要包括光源单元、烟雾发生装置、光学组件、以及系统。光源单元负责产生类似于太阳光的光线,通常选用高亮度的…...
QT下,如何获取控制台输入
最近工作中为了测试某个模块,需要把原先输入模块部分,改成控制台输入来方便测试。在QT中,我们可以使用 QTextStream 类来读取用户的输入来达到目的。下面是一个简单的例子: #include <QCoreApplication> #include <QTex…...
mybatis动态传入参数 pgsql 日期 Interval ,day,minute
mybatis动态传入参数 pgsql 日期 Interval 在navicat中,标准写法 SELECT * FROM test WHERE time > (NOW() - INTERVAL 5 day)在mybatis中,错误写法 SELECT * FROM test WHERE time > (NOW() - INTERVAL#{numbers,jdbcTypeINTEGER} day)报错内…...
常见CSS属性
常见CSS属性。 1. display: 定义:display 属性控制元素如何渲染在文档流中,影响了元素是否占用空间、位置及盒子模型的行为。 使用说明:它可以设置为如block, inline, inline-block, flex, grid, none等值,用于决定元素显示模式…...
WSL-Ubuntu20.04训练环境配置
1.YOLOv8训练环境配置 训练环境配置的话就仍然以YOLOv8为例,来说明如何配置深度学习训练环境。这部分内容比较简单,主要是安装miniAnaconda以及安装torch和torchvision. 首先是miniAnaconda的安装(参考官网的教程Miniconda — Anaconda ),执行…...
vscode里如何用git
打开vs终端执行如下: 1 初始化 Git 仓库(如果尚未初始化) git init 2 添加文件到 Git 仓库 git add . 3 使用 git commit 命令来提交你的更改。确保在提交时加上一个有用的消息。 git commit -m "备注信息" 4 …...
DeepSeek 赋能智慧能源:微电网优化调度的智能革新路径
目录 一、智慧能源微电网优化调度概述1.1 智慧能源微电网概念1.2 优化调度的重要性1.3 目前面临的挑战 二、DeepSeek 技术探秘2.1 DeepSeek 技术原理2.2 DeepSeek 独特优势2.3 DeepSeek 在 AI 领域地位 三、DeepSeek 在微电网优化调度中的应用剖析3.1 数据处理与分析3.2 预测与…...
django filter 统计数量 按属性去重
在Django中,如果你想要根据某个属性对查询集进行去重并统计数量,你可以使用values()方法配合annotate()方法来实现。这里有两种常见的方法来完成这个需求: 方法1:使用annotate()和Count 假设你有一个模型Item,并且你想…...
Nuxt.js 中的路由配置详解
Nuxt.js 通过其内置的路由系统简化了应用的路由配置,使得开发者可以轻松地管理页面导航和 URL 结构。路由配置主要涉及页面组件的组织、动态路由的设置以及路由元信息的配置。 自动路由生成 Nuxt.js 会根据 pages 目录下的文件结构自动生成路由配置。每个文件都会对…...
【git】把本地更改提交远程新分支feature_g
创建并切换新分支 git checkout -b feature_g 添加并提交更改 git add . git commit -m “实现图片上传功能” 推送到远程 git push -u origin feature_g...
Robots.txt 文件
什么是robots.txt? robots.txt 是一个位于网站根目录下的文本文件(如:https://example.com/robots.txt),它用于指导网络爬虫(如搜索引擎的蜘蛛程序)如何抓取该网站的内容。这个文件遵循 Robots…...
如何理解 IP 数据报中的 TTL?
目录 前言理解 前言 面试灵魂一问:说说对 IP 数据报中 TTL 的理解?我们都知道,IP 数据报由首部和数据两部分组成,首部又分为两部分:固定部分和可变部分,共占 20 字节,而即将讨论的 TTL 就位于首…...
Rapidio门铃消息FIFO溢出机制
关于RapidIO门铃消息FIFO的溢出机制及其与中断抖动的关系,以下是深入解析: 门铃FIFO溢出的本质 在RapidIO系统中,门铃消息FIFO是硬件控制器内部的缓冲区,用于临时存储接收到的门铃消息(Doorbell Message)。…...
docker 部署发现spring.profiles.active 问题
报错: org.springframework.boot.context.config.InvalidConfigDataPropertyException: Property spring.profiles.active imported from location class path resource [application-test.yml] is invalid in a profile specific resource [origin: class path re…...
[论文阅读]TrustRAG: Enhancing Robustness and Trustworthiness in RAG
TrustRAG: Enhancing Robustness and Trustworthiness in RAG [2501.00879] TrustRAG: Enhancing Robustness and Trustworthiness in Retrieval-Augmented Generation 代码:HuichiZhou/TrustRAG: Code for "TrustRAG: Enhancing Robustness and Trustworthin…...




