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分布式压测注意事项

(https://img-blog.csdnimg.cn/e3de7b8b65a1447db3bc3618876f62d3.png)
防火墙需要进行关闭,防火墙若不关闭,端口需要打开。
所有的客户端要在同一子网上。
确保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
在这里插入图片描述在这里插入图片描述

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

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

相关文章

【C++】—— 初识C++

【C】—— 初识C 一、什么是 C二、C 的发展历史三、C 版本更新四、C 的重要性五、C 在工作领域中的运用六、C 书籍推荐: 一、什么是 C C语言 是结构化和模块化的语言,适合处理较小规模的程序。对于复杂的问题,规模较大的程序,需要…

使用嵌入式知识打造智能手环:nRF52蓝牙开发实战(C++/BLE/传感器)

项目概述 现代人越来越注重健康管理,智能穿戴设备应运而生。本项目旨在利用低功耗蓝牙芯片nRF52832,结合加速度计、心率传感器、陀螺仪等传感器,开发一款功能完善、性能稳定的智能运动手环。该手环能够实时采集用户的运动数据和生理指标&…

vue3 - vue项目自动检测更新

vue3 GitHub Demo 地址 vue3在线预览 vue2 GitHub Demo 地址 vue2 在线预览 web项目当页面检测到需要更新,然后弹框提示是否更新(刷新页面)这种可以通过纯前端实现也可以通过接口实现 接口实现:通过调用接口轮询和本地的版本号比…

护网HW面试——redis利用方式即复现

参考:https://xz.aliyun.com/t/13071 面试中经常会问到ssrf的打法,讲到ssrf那么就会讲到配合打内网的redis,本篇就介绍redis的打法。 未授权 原理: Redis默认情况下,会绑定在0.0.0.0:6379,如果没有采用相关…

FPGA设计之跨时钟域(CDC)设计篇(1)----亚稳态到底是什么?

1、什么是亚稳态? 在数字电路中,如果数据传输时不满足触发器FF的建立时间要求Tsu和保持时间要求Th,就可能产生亚稳态(Metastability),此时触发器的输出端(Q端)在有效时钟沿之后比较长的一段时间都会处于不确定的状态(在0和1之间振荡),而不是等于数据输入端(D端)的…

强制升级最新系统,微软全面淘汰Win10和部分11用户

说出来可能不信,距离 Windows 11 正式发布已过去整整三年时间,按理说现在怎么也得人均 Win 11 水平了吧? 然而事实却是,三年时间过去 Win 11 占有率仅仅突破到 29%,也就跳起来摸 Win 10 屁股的程度。 2024 年 6 月 Wi…

功率继电器【HF46F】

目的:通过单片机控制继电器动作。 原理图如下,原理图中使用的继电器为HF46F5H, 上述原理图的电路原理: 在这个电路图中,电源开关相关的部分包括一个电源开关、一个三极管Q1、一个二极管D2和一个继电器K1。当电源开关…

阿里云ECS服务器安装jdk并运行jar包,访问成功详解

安装 OpenJDK 8 使用 yum 包管理器安装 OpenJDK 8 sudo yum install -y java-1.8.0-openjdk-devel 验证安装 安装完成后,验证 JDK 是否安装成功: java -version设置 JAVA_HOME 环境变量: 为了确保系统中的其他应用程序可以找到 JDK&…

开源必看!50 多个本地运行 LLM 的开源选项

在我之前的文章中,我讨论了使用本地托管的开源权重 LLM 的好处,例如数据隐私和成本节约。通过主要使用免费模型并偶尔切换到 GPT-4,我的月度开支从 20 美元降至 0.50 美元。设置端口转发到本地 LLM 服务器是移动访问的免费解决方案。 有许多…

WSL2 的安装与运行 Linux 系统

前言 适用于 Linux 的 Windows 子系统 (WSL) 是 Windows 的一项功能,允许开发人员在 Windows 系统上直接安装并使用 Linux 发行版。不用进行任何修改,也无需承担传统虚拟机或双启动设置的开销。 可以将 WSL 看作也是一个虚拟机,但是它更为便…

let/const/var的区别及理解

在JavaScript中,let、const 和 var 是用来声明变量的关键字,但它们之间在作用域、变量提升、重复声明等方面存在区别,详细情况如下: 1. let、const、var 的区别 (1) 块级作用域 let 和 const:具有块级作用域,由 {} 包…

记录些Redis题集(2)

Redis 的多路IO复用 多路I/O复用是一种同时监听多个文件描述符(如Socket)的状态变化,并能在某个文件描述符就绪时执行相应操作的技术。在Redis中,多路I/O复用技术主要用于处理客户端的连接请求和读写操作,以实现高并发…

Redis 中String类型操作命令(命令演示,时间复杂度,返回值,注意事项)

String 类型 文章目录 String 类型set 命令get 命令mset 命令mget 命令get 和 mget 的区别incr 命令incrby 命令decr 命令decrby 命令incrbyfloat 命令append 命令getrange 命令setrange 命令 字符串类型是 Redis 中最基础的数据类型,在讲解命令之前,我们…

STM32基础篇:EXTI × 事件 × EXTI标准库

EXTI EXTI简介 EXTI:译作外部中断/事件控制器,STM32的众多片上外设之一,能够检测外部输入信号的边沿变化并由此产生中断。 例如,在检测按键时,按键按下时会使电平产生翻转,因此可以使用EXTI来读取按下时…

用AirScript脚本给女/男朋友发送每日早安邮件(极简版本)

先看效果 工具 金山文档/WPS提供了每日定时的AirScript脚本服务,非常方便~ 话不多说,我们以金山文档为例,只有简单的五个步骤,非常容易~ 教程开始 步骤1 我们打开金山文档新建一个智能表格 步骤2 按下图…

基于Python thinker GUI界面的股票评论数据及投资者情绪分析设计与实现

1.绪论 1.1背景介绍 Python 的 Tkinter 库提供了创建用户界面的工具,可以用来构建股票评论数据及投资者情绪分析的图形用户界面(GUI)。通过该界面,用户可以输入股票评论数据,然后通过情感分析等技术对评论进行情绪分析…

【Linux网络】IP协议{初识/报头/分片/网段划分/子网掩码/私网公网IP/认识网络世界/路由表}

文章目录 1.入门了解2.认识报头3.认识网段4.路由跳转相关指令路由 该文诸多理解参考文章:好文! 1.入门了解 用户需求:将我的数据可靠的跨网络从A主机送到B主机 传输层TCP:由各种方法(流量控制/超时重传/滑动窗口/拥塞…

【JavaEE】网络编程——TCP

🤡🤡🤡个人主页🤡🤡🤡 🤡🤡🤡JavaEE专栏🤡🤡🤡 文章目录 前言1.网络编程套接字1.1流式套接字(TCP)1.1.1特点1.1.2编码1.1.2.1ServerSo…

微信小游戏 彩色试管 倒水游戏 逻辑 (二)

最近开始研究微信小游戏,有兴趣的 可以关注一下 公众号, 记录一些心路历程和源代码。 定义一个 Water class 1. **定义接口和枚举**: - WaterInfo 接口定义了水的颜色、高度等信息。 - PourAction 枚举定义了水的倒动状态,…

【Nuxt3】vue3+tailwindcss+vuetify引入自定义字体样式

一、目的 在项目中引入自定义的字体样式(全局页面都可使用) 二、步骤 1、下载好字体 字体的后缀可以是ttf、otf、woff、eot或者svg(推荐前三种) 以抖音字体为例下载好放在静态文件夹(font)下 案例字…