Jmeter配置不同业务请求比例,应对综合场景压测

2023-09-16 15:01:39

背景

在进行综合场景压测时,遇到了如何实现不同的请求所占比例不同的问题。

有人说将这些请求分别放到单独的线程组下,然后将线程组的线程数按照比例进行配置。

这种方法不是很好,因为服务器对不同的请求处理能力不同,有的处理快,有的处理慢。若采取上述方案的话,并不会按照我们预期的比例进行并发。

那么如何真实模拟按比例进行并发呢?此前使用LR进行过类似场景的测试时的思路如下:

每次向服务器发出请求时,先生成一个随机数,我们对随机数的取值划分若干个范围(对应若干个业务请求),然后对随机数进行判断,当随机数落在某个范围内,就可以执行对应的请求。比如,我们压测的过程中,要访问百度和besttest官网,并且请求比例是2:8,那么可以规定随机数取值1<=random<=100,然后再划分2个范围:当随机数的取值在0到20之间,则访问百度;当随机数取值在20和100之间,则访问besttest官网;根据概率论,当取样量足够大的话,访问百度和besttest官网的请求比例会比较接近2:8。

Jmeter也能这样实现吗?答案是肯定的,下面我们使用Jmeter结合刚才的例子进行分解

Jmeter实现(Random)

首先,我们需要一个能够生成随机数的函数,刚好jmeter提供了这个函数

在测试计划下,我们右键“添加”——配置原件——Random Variable

 设置随机数的变量名称为num,设置取值范围0到100

添加两个如果(if)控制器,添加控制条件,控制执行请求。

右键线程组添加“逻辑控制器”——如果(if)控制器

然后在两个控制器下,分别添加1个http请求。

当随机数num取值在20和100之间;调用获取图形获取验证码;

添加判断条件,如果当随机数num取值在1和20之间,调用登录接口

 ​添加聚合报告,查看结果

运行jmeter验证,取值是否按照比例请求,我们设置一个线程数,让其循环100次,结果如下,获取图形获取验证码78次,登录接口22次,基本满足我们想要的比例。

可以预见的是当数据量达到一定程度之后,会无限接近设置的2比8的比例。

Jmeter实现(计数器)

计数器可以通过如下方式添加,其他的实现思路一样

后话: 其实在LR中也可以在场景设计里设置不同的请求的比例来实现。但是本文主要是讨论Jmeter的实现思路,所以在前文中没有提及。

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

更多推荐

mysql 双主复制_配置步骤、遇到的问题及解决办法

MySQL主主复制结构区别于主从复制结构。在主主复制结构中,两台服务器的任何一台上面的数据库存发生了改变都会同步到另一台服务器上,这样两台服务器互为主从,并且都能向外提供服务。配置步骤:一、修改配置文件(一)服务器A(192.168.115.119)配置如下(该配置需要写到[mysqld]区域内)server-id=1

PY32F003F18之通用定时器MspInit函数

PY32F003F18高级定时器有TIM1,通用定时器有TIM3,TIM14,TIM16和TIM17。在初始化定时器前,要先写好MspInit函数,才可以调用与之对应的初始化函数。1、TIM1更新事件的MspInit函数//函数功能:在初始化定时器时,HAL库使用该函数//使能TIMx时钟,设置中断优先级,使能TIMx

Spring MVC里的DispatchServlet(结合Spring官网翻译)

SpringMVC里的DispatchServlet前言1.SpringWebMVC1.1DispatcherServlet(中央调度器)1.1.1ContextHierarchy(上下文层次结构)1.1.2SpecialBeanTypes(特定的bean类型)1.1.3WebMVCConfig1.1.4Servlet

MyBatis特殊SQL的执行(模糊查询、批量删除、动态设置表名、添加功能获取自增的主键)

一、模糊查询1.1like'%${xxx}%'的方式模糊查询/***根据用户名进行模糊查询*@paramusername*@returnjava.util.List<com.atguigu.mybatis.pojo.User>*/List<User>getUserByLike(@Param("username")Str

竞赛 基于深度学习的人脸性别年龄识别 - 图像识别 opencv

文章目录0前言1课题描述2实现效果3算法实现原理3.1数据集3.2深度学习识别算法3.3特征提取主干网络3.4总体实现流程4具体实现4.1预训练数据格式4.2部分实现代码5最后0前言🔥优质竞赛项目系列,今天要分享的是🚩毕业设计人脸性别年龄识别系统-图像识别opencv该项目较为新颖,适合作为竞赛课题方向,学长非常推

FPGA-结合协议时序实现UART收发器(三):串口接收模块uart_rx

FPGA-结合协议时序实现UART收发器(三):串口接收模块uart_rx串口接收模块uart_rx的功能实现文章目录FPGA-结合协议时序实现UART收发器(三):串口接收模块uart_rx一、功能实现二、uart_rx代码总结一、功能实现对照代码,串口接收模块uart_rx实现功能包括:r_cnt计数信号,计数数据

DMNet复现(一)之数据准备篇:Density map guided object detection in aerial image

一、生成密度图密度图标签生成采用以下代码,生成训练集密度图gt:importcv2importglobimporth5pyimportscipyimportpickleimportnumpyasnpfromPILimportImagefromitertoolsimportislicefromtqdmimporttqdm

Git常见的面试题

在软件开发领域,Git是一个极为重要的版本控制系统,几乎每个开发者都需要掌握它。因此,在面试过程中,Git常常成为了面试官们用来考察候选人技能和经验的重要工具之一。以下是一些常见的Git面试题,希望它们能帮助你在面试中脱颖而出。什么是Git?Git是一个分布式版本控制系统,用于跟踪和管理软件项目的变化。它允许多人协作开

Kafka 源码分析——Producer

文章目录前言Producer整体流程Producer初始化Producer发送流程执行拦截器逻辑获取集群元数据序列化选择分区消息累加进缓存消息发送Producer缓冲区Producer参数调优前言在Kafka中,把产生消息的一方称为Producer即生产者,它是Kafka的核心组件之一,也是消息的来源所在。它的主要功能

千兆以太网网络层 ARP 协议的原理与 FPGA 实现

文章目录前言一、ARP帧的应用场景和存在目的二、ARP帧工作原理三、以太网ARP帧发包实例设计四、以太网CRC校验代码五、以太网ARP帧发包测试---GMII1.模拟数据发送2.仿真模块3.仿真波形六、以太网ARP帧发包测试---RGMII1.顶层文件2.仿真代码七、上板测试(RGMII)前言本节对以太网电路接口和以太

中级职称评审论文重要吗?是不是必须要论文呢?

现在评中级职称职称对论文有什么要求?没有论文可以参与职称评审吗?建筑中级职称怎么评?那自然是从多方面来考核人才是否具备了评中级工程师的能力,职称论文就是考核的标准之一。甘建二告诉你,现在评职称论文是很重要的,没有论文职称是通过不了的,所以评职称的小伙伴,首先建议您这边先考虑发表论文,湖北这边职称评审对于论文的一个要求是

热文推荐