jmeter-事务控制器与并发控制器与if控制器项目实践

news2024/10/6 20:35:09

前言

在做性能压测的时候,除了做单接口这种基准压测,我们还需要多接口串联的混合场景,比如打开小程序展示的首页,购物下单时的结算页。如果这些接口都是串行的,那就非常简单了,仅仅只需要创建事务控制器,将所有的接口放进去就行了。但是,事实上,这些接口并不都是串行的,有些是并行的,众所周知,jmeter的每个线程组请求是从上而下的,只有上一个请求成功了才会进行到下一个请求,并不能做到并行处理,所以,针对这个场景,该怎么解决?
在这里插入图片描述

解决方案

使用并发控制器与if控制器解决,并行控制器可以让线程组下的请求同时发出,if控制器可以作为逻辑判断,判断上一个步骤是否成功,如果出错则不请求。

1、并发控制器
1.1 安装

Options>Plugins Managers>搜索 Parallel Controller勾选进行安装,如下所示:

在这里插入图片描述

1.2 添加

添加并发控制器
在这里插入图片描述
勾选Generate parent sample,这样生成的报告才能看到该事务

1.3 验证

怎么验证线程是不是同时并发的呢,使用表格查看结果
在这里插入图片描述
分别创建两个并发控制器,一个加两个请求,另一个加四个请求,结果如下,可以看到两个控制器下的线程请求的时间几乎都一致的。

在这里插入图片描述
注意:并发控制器下不能设置事务控制器,也不能再次设置并发控制器,否则会报错
但事务控制器下可以设置并发控制器

2、if控制器
2.1 添加使用

在这里插入图片描述
使用以下参数来判断上一个控制器或者线程是否通过,通过则执行,不通过则不执行。

${JMeterThread.last_sample_ok}

2.2 验证

记得勾选Generate parent sample
如果不用if控制器,结果如下:即使第一个控制器里的某个请求错误,第二个也还是会请求

在这里插入图片描述
查看并行控制器的最大时间:load time

在这里插入图片描述

加了if控制器,则不会请求第二个控制器了
在这里插入图片描述

实践

场景描述

进入小程序后,首页加载分为三个步骤,第一个步骤是查询用户,共有一个接口。第二个步骤是查询店铺与经销商,共有两个接口,第三个步骤查询商品,共有四个接口,每个步骤都是上下关系。

脚本编写

模型:

事务控制器:
 	if控制器:
       并发控制器:

在这里插入图片描述

请求参数计算:

业务要求tps100,我们统计出单个事务请求时间为400ms,则jmeter的需要线程数为100/(1000/400)=40线程,(这个只是模糊计算数据),所以,为了更好地观看数据,我们可以设置大于一至两倍的线程数。

此处我们使用阶梯式压测:

总共50个线程,每个步骤新增10个线程,执行15s。

注意,并发控制器需要勾选Generate parent sample,要不然事务控制器统计的是不是并发控制器最大时间

在这里插入图片描述

请求结果分析

tps走势
在这里插入图片描述
线程数走势
在这里插入图片描述
从上面的走势可以看出,42s左右的时候,线程数还是递增的,不过,tps却没有很高的递增,说明,tps已经出现了瓶颈,根据tps走势大概可以看出tps是在65徘徊,不超过80tps

聚合报告:
tps是平均值,一般我不以这个为准。报告也显示了,出错率0.01%。刚好符合999原则。
在这里插入图片描述

最终结果是:该首页页面事务支持的tps在65左右,最高不超过80tps。

疑问

线程数是否还需要加,继续加压只会让响应时间加长,报错率更高,完全没有意义了。

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

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

相关文章

【GD32F427开发板试用】+rtt-thread nano+finsh极简开发

本篇文章来自极术社区与兆易创新组织的GD32F427开发板评测活动,更多开发板试用活动请关注极术社区网站。作者:理想三旬 引言 在工作闲暇之际,逛逛论坛,无意间看到GD的试用活动,一如既往的积极,在官方还没发…

Linux 驱动的内核适配 - 方法

原生与野生 Linux 的驱动代码大致可分为两种:一种是已经进入 mainline 的,当内核 API 变化时,会被同步地修改;还有一种是 out-of-tree 的,需要用一套驱动代码去适配不同版本的内核。由于内核 API 持续变动的特性&…

带你实现react源码的核心功能

React 的几种组件以及首次渲染实现React 更新机制的实现以及 React diff 算法 React 的代码还是非常复杂的,虽然这里是一个简化版本。但是还是需要有不错的面向对象思维的。React 的核心主要有一下几点。 虚拟 dom 对象(Virtual DOM)虚拟 d…

RabbitMQ_消息确认机制

消息确认机制分为消息发送确认机制与消息消费确认机制 消息发送确认机制 消息发送确认机制:消息由producer发送后,确认其是否到达broker,又是否被exchange转发至对应queue的机制 该机制分为两部分:producer---broker&#xff0c…

Android 性能优化之内存优化——重识内存

我们知道,手机的内存是有限的,如果应用内存占用过大,轻则引起卡顿,重则导致应用崩溃或被系统强制杀掉,更严重的情况下会影响应用的留存率。因此,内存优化是性能优化中非常重要的一部分。但是,很…

66-86-javajvm-堆

66-javajvm-堆: 堆的核心概述 堆与进程、线程 一个进程对应一个JVM实例一个JVM实例对应一个堆空间进程包含多个线程,所以线程之间共享同一个堆空间 对堆的认识 一个JVM实例只存在一个堆内存,堆也是Java内存管理的核心区域。Java堆区在JVM启动…

HashMap原理

在Java编程语言中,最基本的结构就是两种,一种是数组,一种是模拟指针(引用),所有的数据结构都可以用这两个基本结构构造,HashMap也一样。当程序试图将多个 key-value 放入 HashMap 中时,以如下代码片段为例:…

P1182 数列分段 Section II——二分答案

数列分段 Section II 题目描述 对于给定的一个长度为N的正整数数列 A1∼NA_{1\sim N}A1∼N​,现要将其分成 MMM(M≤NM\leq NM≤N)段,并要求每段连续,且每段和的最大值最小。 关于最大值最小: 例如一数列…

NCTF web总结与复现

前言 打完NCTF休息了一下,总体感觉还行,学到了很多。 calc 这一题也卡了我很久,因为复现过DASCTF三月赛,一直在想着有没有可以替代反引号或绕过的方法,搞了好久都没出,在学长的提示下学到了一个方法&…

最新出炉的阿里巴巴面试题及答案汇总(513页)

前言 秋招已经结束了,不知道各位有没有拿到自己心仪的offer?最近有不少粉丝去阿里巴巴面试了,回来之后我整理成了一份手册java面试时常用到的面试题(附答案)那么今天分享给大家,祝愿大家都能找到满意的工作…

HTML期末作业课程设计期末大作业——我的美丽家乡湛江 海鲜之都HTML+CSS+JavaScript

家乡旅游景点网页作业制作 网页代码运用了DIV盒子的使用方法,如盒子的嵌套、浮动、margin、border、background等属性的使用,外部大盒子设定居中,内部左中右布局,下方横向浮动排列,大学学习的前端知识点和布局方式都有…

python爬虫实战之逆向分析酷狗音乐

文章目录前言一、请求分析二、逆向思路三、全部代码总结前言 声明:本文章只是用于学习逆向知识,仅供学习,未经作者同意禁止转载 对于爬虫而言,不管是什么类型的都会遵循这几个步骤 获取目标url分析请求数据逆向解密数据伪造请求清…

算法日常训练12.5

首先有个很大的进步,看见困难题我没选择做逃兵跑路,这点起码是进步了,虽然算法能力还是那么拉,但是起码敢不自量力地分析一下。。。还能看题解理解下。 先找题解中最简单地一种超时方法开始理解,使用动态规划&#xff…

线程基础概念

1.线程基础 现代软件系统中,除了进程之外,线程也是一个十分重要的概念。特别是随着CPU频率增长开始出现停滞,而开始向多核方向发展。多线程,作为实现软件并发执行的一个重要的方法,也开始具有越来越重要的地位。 什么…

[本人毕业设计] 别踩白块_计算机科学与技术_前端H5游戏毕设

摘 要 本文详细介绍了网页版躲避白色钢琴块音乐游戏的设计和实现。由于游戏软件安装占据较大的空间与安装时间,而且步骤繁琐,用常规的游戏安装方法不能取得便捷的游戏安装体验。网页游戏是一种基于在网络游戏中被广泛应用,网页游戏更具有便捷…

【Tensorflow深度学习】实现手写字体识别、预测实战(附源码和数据集 超详细)

需要源码和数据集请点赞关注收藏后评论区留言私信~~~ 一、数据集简介 下面用到的数据集基于IAM数据集的英文手写字体自动识别应用,IAM数据库主要包含手写的英文文本,可用于训练和测试手写文本识别以及执行作者的识别和验证,该数据库在ICDAR1…

对副业的选择无论是自媒体还是 Python接单 ,始终绕不开IT行业。

前言 这个年代,成年人的日子活成了一部苦情戏。十年前,5000块钱工资还能过的自由自在;今天,估计连车贷,房贷,信用卡都不够还。所以一些想要改变现状的朋友,选择了副业这种形式,副业…

【Linux】Shell脚本详解

目录一.概述二.Linux提供的Shell解析器三.Shell入门1.执行一个简单的shell脚本2.脚本常用的执行方法四.变量1.系统预定义变量2.自定义变量3.特殊变量五.运算符六.条件判断1.单条件判断2.多条件判断七.流程控制(重点)1.if判断2.case语句3.for循环4.while循环八.read读取控制台输…

【论文简述】 Point-MVSNet:Point-Based Multi-View Stereo Network(ICCV 2019)

一、论文简述 1. 第一作者:Rui Chen、Songfang Han 2. 发表年份:2019 3. 发表期刊:ICCV 4. 关键词:MVS、深度学习、点云、迭代改进 5. 探索动机:很多传统方法通过多视图光度一致性和正则化优化迭代更新&#xff…

C语言实例|使用C程序优雅地杀掉其它程序进程

C语言文章更新目录 C语言学习资源汇总,史上最全面总结,没有之一 C/C学习资源(百度云盘链接) 计算机二级资料(过级专用) C语言学习路线(从入门到实战) 编写C语言程序的7个步骤和编程…