当前位置: 首页 > news >正文

Jmeter实战教程入门讲解

前言

通过前面对Jmeter元件的讲解,大家应该都知道常用元件的作用和使用了。编写Jmeter脚本前我们需要知道Jmeter元件的执行顺序,可以看看我这篇性能测试学习之路(三)—初识Jmeter来了解下。下面我将以工作中的一个简单的实例带大家手把手写一个Jmeter脚本。

场景及分析

场景:用户登录系统,选择相应的模块,然后去相应的菜单下新增一个单据。

预压测接口:用户登录接口和单据保存接口,假设业务场景为一天2小时中,请求登录接口为1000次,请求单据保存接口为3000次。

脚本分析:用户登录系统,我们需要根据登录接口来获取到token供后面接口使用,这时我们需要用到后置处理器;选择相应的模块和进入到相应的菜单下我们要看这两个接口是不是有关于Pageid的关联,这需要我们通过抓包工具抓到的接口来分析;保存单据就是一个单纯的保存接口。按理说我们只需要写四个接口,这四个接口的服务器地址是一样的,所以我们可以添加一个HTTP请求默认值。又需要添加一个HTTP信息头管理器来设置请求头的一些信息。然后线程组设置成1循环1次添加查看结果数调试脚本是否能跑通。

性能场景分析:
登录接口:2小时请求2000次
保存接口:2小时请求5000次
没有明确的指标的话我们就是可以通过二八原则来计算出大概得TPS。那么什么是二八原则呢?
二八原则是指80%的请求在20%的时间内(时间按秒来计算)完成,计算公式: TPS=总请求数80%/(总时间20%)
那么通过计算可得出登录接口的TPS=2000x0.8÷(2x60x60x0.2)=1.1,保存接口的TPS=5000x0.8÷(2x60x60x0.2)=2.8,TPS只要能达到我们计算的值就能满足线上需要。

脚本编写

经过抓包工具分析接口发现只需要写登录和保存接口即可,下面是这个脚本的调试时的样子:
在这里插入图片描述
重点来了!!!调试接口时设置线程数为1循环次数为1就行,编写脚本时遇到的坑有登录接口和保存接口的请求头中的Content-Type不一样所以我们在保存下又增加了一个HTTP信息头管理器;保存接口传参中有中文我们需要在内容编码写入UTF-8(不写入的话会产生乱码)。
在这里插入图片描述

脚本调通了我们就完善一下脚本并设置好并发数来运行脚本,如下:
1、设置线程组中的线程数并勾选循环次数为永远,勾选调度器设置好持续时间来让线程持续运行。
在这里插入图片描述
2.添加断言并去掉查看结果数和调试取样器(运行时会耗费机器资源)。添加聚合报告、TPS和响应时间监听器来检测结果。
在这里插入图片描述
3.然后开始执行,等待运行完毕后查看监听器中的结果。

聚合报告:主要关注95% 响应时间、异常和吞吐量指标
在这里插入图片描述
Transactions per Second:主要关注TPS随时间的变化趋势
在这里插入图片描述
Response Times Over Time:主要关注响应时间随时间的变化趋势
在这里插入图片描述

这就是一次简单的压测,根据需求分析并写出脚本,写脚本时先用一个线程来调试成功,成功之后再设置相应的并发数来进行压测。
在压测中不仅需要看聚合报告、TPS和响应时间折线图,也需要配合运维查看服务器CPU、内存、磁盘等利用率。一般来说服务器的这三个指标利用率在压测过程中不能超过80% 。当压测完成后,根据结果配合开发、运维进行性能调优,性能调优后续会笼统的讲一下。

相关文章:

Jmeter实战教程入门讲解

前言 通过前面对Jmeter元件的讲解,大家应该都知道常用元件的作用和使用了。编写Jmeter脚本前我们需要知道Jmeter元件的执行顺序,可以看看我这篇性能测试学习之路(三)—初识Jmeter来了解下。下面我将以工作中的一个简单的实例带大…...

Flutter 中的 PrimaryScrollController 小部件:全面指南

Flutter 中的 PrimaryScrollController 小部件:全面指南 Flutter 是一个由 Google 开发的跨平台 UI 框架,它允许开发者使用 Dart 语言构建高性能、美观的移动、Web 和桌面应用。在 Flutter 的滚动机制中,PrimaryScrollController 起着至关重…...

Windows线程同步的四种方式和区别

1. Windows线程同步的四种方式 2. 区别 Critical Section更多强调的是保护,Event对象、Mutex对象与Semaphore对象更多的强调的是同步;Critical Section对象是无法设置等待超时的,而其他三个对象则可以设置等待超时,从这一点来讲…...

C++ 20新特性之Concepts

C20的新特性之一Concepts,为C的模板编程带来了重大的改进和便利。以下是关于C20中Concepts特性的详细介绍: 基本概念 定义:Concepts是C20中引入的一种新的语言特性,用于限制类和函数模板的模板类型和非类型参数。它允许你为模板编…...

MATLAB基础应用精讲-【数模应用】SPSSAU数据处理

目录 SPSSAU 标题修改 1、说明 2、举例 数据标签 1、说明 2、举例...

AI大模型探索之路-实战篇15: Agent智能数据分析平台之整合封装Tools和Memory功能代码

系列篇章💥 AI大模型探索之路-实战篇4:深入DB-GPT数据应用开发框架调研 AI大模型探索之路-实战篇5:探索Open Interpreter开放代码解释器调研 AI大模型探索之路-实战篇6:掌握Function Calling的详细流程 AI大模型探索之路-实战篇7…...

CV每日论文--2024.6.4

1、Mixed Diffusion for 3D Indoor Scene Synthesis 中文 标题:用于 3D 室内场景合成的混合扩散 简介:这篇论文提出了一种名为MiDiffusion的混合离散-连续扩散模型,用于从给定的房间类型、平面图和可能存在的物体中合成逼真的3D室内场景。 作者指出,该…...

Android bw_costly_<iface>链

测试时关注到bw_costly_链 因为和iface有关。猜测这个链是动态生成的。 开关数据业务测试,果然关闭数据业务后,bw_OUTPUT中不再会调用bw_costly_rmnet_data3,也没有bw_costly_rmnet_data3这个链了。 再次打开数据业务后出现了bw_costly_rmnet…...

TypeScript 项目,自身 package 是 A,它引用了 B package。项目编译时,选择依赖版本的机制是什么?

在 TypeScript 项目中,当 package A 引用了 package B,编译 A 的过程中,B package 将按照 B package 自身的 package.json 文件中指定的各个库的版本进行编译,而不是按照 A package 中的库版本。 每个 package 都有自己的依赖项和…...

【数据结构】链表----头结点的作用

链表是一种常见的数据结构,由一系列节点(Node)组成,每个节点包含数据和指向下一个节点的指针。链表的头结点(Head Node)也称为哨兵位,是链表的起点,通常有以下几个重要作用&#xff…...

(CVPRW,2024)可学习的提示:遥感领域小样本语义分割

文章目录 相关资料摘要引言方法训练基础类别新类别推理 相关资料 论文:Learnable Prompt for Few-Shot Semantic Segmentation in Remote Sensing Domain 代码:https://github.com/SteveImmanuel/OEM-Few-Shot-Learnable-Prompt 摘要 小样本分割是一项…...

tinyrenderer-切线空间法线贴图

法线贴图 法线贴图分两种,一种是模型空间中的,一种是切线空间中的 模型空间中的法线贴图的rgb代表着每个渲染像素法线的xyz,与顶点坐标处于一个空间,图片是五颜六色的。 切线空间中的法线贴图的rgb同样对应xyz,是切线…...

C++的vector使用优化

我们在上一章说了如何使用这个vector动态数组,这章我们说说如何更好的使用它以及它是如何工作的。当你创建一个vector,然后使用push_back添加元素,当当前的vector的内存不够时,会从内存中的旧位置复制到内存中的新位置&#xff0c…...

关于stm32的复用和重映射问题

目录 需求IO口的复用和重映射使用复用复用加重映射 总结参考资料 需求 一开始使用stm32c8t6,想实现pwm输出,但是原电路固定在芯片的引脚PB10和PB11上,查看了下引脚的功能,需要使用到复用功能。让改引脚作为定时器PWM的输出IO口。…...

遍历数组1

package demo; import java.util.ArrayList; public class Arrilist { public static void main(String[] args) { ArrayList<String>listnew ArrayList<>(); list.add("汤神"); list.add("yyx"); list.add("hong go…...

Go语言 一些问题了解

一、读取文件数据&#xff0c;是阻塞还是非阻塞的&#xff1f; 分两种情况&#xff1a;常规读取文件数据&#xff0c;和网络IO读取数据 1. 常规读取文件数据&#xff1a; io.Reader 和 bufio.Reader 是阻塞进行的。 bufio.Reader 提供缓冲的读取操作&#xff0c;意味着数据是…...

C++ Primer 第五版 第15章 面向对象程序设计

面向对象程序设计基于三个基本概念&#xff1a;数据抽象、继承和动态绑定。 继承和动态绑定对编写程序有两方面的影响&#xff1a;一是我们可以更容易地定义与其他类相似但不完全相同的新类&#xff1b;二是在使用这些彼此相似的类编写程序时&#xff0c;我们可以在一定程度上…...

finebi或者finereport发邮件

我们二次开发中&#xff0c;如果想利用产品自带的发邮件的功能&#xff0c;来发送自己的邮件内容。 首先 决策系统中邮件相关信息要配置好之后&#xff1a; 这里配好了发件人&#xff0c;以及默认发件人后&#xff0c; private void sendEmail(String content,String subject)…...

基于聚类和回归分析方法探究蓝莓产量影响因素与预测模型研究

&#x1f31f;欢迎来到 我的博客 —— 探索技术的无限可能&#xff01; &#x1f31f;博客的简介&#xff08;文章目录&#xff09; 目录 背景数据说明数据来源思考 正文数据预处理数据读取数据预览数据处理 相关性分析聚类分析数据处理确定聚类数建立k均值聚类模型 多元线性回…...

【数据结构】从前序与中序遍历,或中序与后序遍历序列,构造二叉树

欢迎浏览高耳机的博客 希望我们彼此都有更好的收获 感谢三连支持&#xff01; 首先&#xff0c;根据先序遍历可以确定根节点E&#xff0c;再在中序遍历中通过E确定左树和右数 &#xff1b; 设立inBegin和inEnd&#xff0c;通过这两个参数的游走&#xff0c;来进行子树的创建&a…...

内存分配函数malloc kmalloc vmalloc

内存分配函数malloc kmalloc vmalloc malloc实现步骤: 1)请求大小调整:首先,malloc 需要调整用户请求的大小,以适应内部数据结构(例如,可能需要存储额外的元数据)。通常,这包括对齐调整,确保分配的内存地址满足特定硬件要求(如对齐到8字节或16字节边界)。 2)空闲…...

突破不可导策略的训练难题:零阶优化与强化学习的深度嵌合

强化学习&#xff08;Reinforcement Learning, RL&#xff09;是工业领域智能控制的重要方法。它的基本原理是将最优控制问题建模为马尔可夫决策过程&#xff0c;然后使用强化学习的Actor-Critic机制&#xff08;中文译作“知行互动”机制&#xff09;&#xff0c;逐步迭代求解…...

日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする

日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする 1、前言(1)情况说明(2)工程师的信仰2、知识点(1) にする1,接续:名词+にする2,接续:疑问词+にする3,(A)は(B)にする。(2)復習:(1)复习句子(2)ために & ように(3)そう(4)にする3、…...

《Qt C++ 与 OpenCV:解锁视频播放程序设计的奥秘》

引言:探索视频播放程序设计之旅 在当今数字化时代,多媒体应用已渗透到我们生活的方方面面,从日常的视频娱乐到专业的视频监控、视频会议系统,视频播放程序作为多媒体应用的核心组成部分,扮演着至关重要的角色。无论是在个人电脑、移动设备还是智能电视等平台上,用户都期望…...

spring:实例工厂方法获取bean

spring处理使用静态工厂方法获取bean实例&#xff0c;也可以通过实例工厂方法获取bean实例。 实例工厂方法步骤如下&#xff1a; 定义实例工厂类&#xff08;Java代码&#xff09;&#xff0c;定义实例工厂&#xff08;xml&#xff09;&#xff0c;定义调用实例工厂&#xff…...

鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院查看报告小程序

一、开发环境准备 ​​工具安装​​&#xff1a; 下载安装DevEco Studio 4.0&#xff08;支持HarmonyOS 5&#xff09;配置HarmonyOS SDK 5.0确保Node.js版本≥14 ​​项目初始化​​&#xff1a; ohpm init harmony/hospital-report-app 二、核心功能模块实现 1. 报告列表…...

VTK如何让部分单位不可见

最近遇到一个需求&#xff0c;需要让一个vtkDataSet中的部分单元不可见&#xff0c;查阅了一些资料大概有以下几种方式 1.通过颜色映射表来进行&#xff0c;是最正规的做法 vtkNew<vtkLookupTable> lut; //值为0不显示&#xff0c;主要是最后一个参数&#xff0c;透明度…...

云原生安全实战:API网关Kong的鉴权与限流详解

&#x1f525;「炎码工坊」技术弹药已装填&#xff01; 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 一、基础概念 1. API网关&#xff08;API Gateway&#xff09; API网关是微服务架构中的核心组件&#xff0c;负责统一管理所有API的流量入口。它像一座…...

4. TypeScript 类型推断与类型组合

一、类型推断 (一) 什么是类型推断 TypeScript 的类型推断会根据变量、函数返回值、对象和数组的赋值和使用方式&#xff0c;自动确定它们的类型。 这一特性减少了显式类型注解的需要&#xff0c;在保持类型安全的同时简化了代码。通过分析上下文和初始值&#xff0c;TypeSc…...

比较数据迁移后MySQL数据库和OceanBase数据仓库中的表

设计一个MySQL数据库和OceanBase数据仓库的表数据比较的详细程序流程,两张表是相同的结构,都有整型主键id字段,需要每次从数据库分批取得2000条数据,用于比较,比较操作的同时可以再取2000条数据,等上一次比较完成之后,开始比较,直到比较完所有的数据。比较操作需要比较…...