【Jmeter】按比例分配Api压测
先看
【Jmeter】Request1输出作为Request2输入-后置处理器
继续聊提出的第二个问题,即
2.需要按比例分配API请求并发,以模拟真实的API压力场景
做压测的时候,一般的需求都是多个API同时压,不然也看不出真正的tps是多少啊。
比如虽然接口a的需求并发不高,500个用户才请求一次,但是特别耗性能,导致其他接口tps下降严重,所以压测的时候可以将比例调的很小,但是不能忽略它,只测并发请求高的接口
说会主题,如何按比例分配压测并发量呢?使用Jmeter可以有两种实现方式
先说第一种,通过线程组的方式控制:
线程组1配置:

线程组2配置:

区别就是线程数不一样,当然用循环次数也可以控制,区别可以看【Jmeter】基础介绍-详细。
Request请求:

结果:

这里哪个请求在前完全随机,两个线程中互不干扰。
这种方式的好处就是完全并行,互不干扰,缺点就是基本没有使用场景,一般情况下,API都是有权限认证接口的,后面的接口需要依赖前面接口的输出(实现方式可以看【Jmeter】Request1输出作为Request2输入-后置处理器),这种完全隔离的方式显然无法满足需求,或者你需要自己写代码提前获取登录信息,不使用压测过程中登录返回的认证信息。
我们继续介绍第二种方式,其实就是按【Jmeter】Request1输出作为Request2输入-后置处理器中创建的线程组一样,只使用一个线程组,然后通过循环控制器来控制某个Api所占比例:
新建循环控制器:

调整参数达到按比例分配Api压力的目的:


执行效果:

如上图所示,执行了一个Request1和两个Request2,而且是按顺序执行的,即这种方式可以满足【Jmeter】Request1输出作为Request2输入-后置处理器需求的同时使用。不过有两点需要注意:
- 这种方式按顺序执行时,变量(例如身份信息token)是会被覆盖的,即无法完全模拟多用户登录及身份信息的场景。
- 这种配置方式会导致api并发分配不均,即在时间段1全部请求都是Request1,时间段2全部请求都是Request2,虽然总量是按比例的,但是并不符合我们的需求。
以上两个问题,在我的测试场景中1没有影响,即用户1、2、3、4、5那个来请求Api对压测来说是不关心的,性能完全一样。这里的登录只是为了压测登录接口,同时生成一个token给下面的接口使用。问题2影响比较大,可以通过【Jmeter】基础介绍-详细中提到的Ramp-up时间参数来控制,首先按比例配置好循环控制器后,将线程数和循环次数配置为1,Ramp-up配置为0,即立刻启动,然后使用压测机跑一下用于估算一次压测流程的时间。得到这个时间后,就是我们在实际压测中需要填写到Ramp-up中的参数,比如一次完整的压测流程需要2s,我现在需要压测执行1000个线程,循环100次,即一共10w次请求,将Ramp-up时间设置为2s,即1000个线程将在2s内逐步启动,达到所有线程的启动时间覆盖第一个线程一次循环的整个时间段,来达到真实模拟多种请求并发执行的过程,解决以上提到的第二个问题。
【Jmeter】按比例分配Api压测的更多相关文章
- Jmeter安装与使用(压测)
一.介绍 Apache JMeter是100%纯JAVA桌面应用程序,被设计为用于测试客户端/服务端结构的软件(例如web应用程序).它可以用来测试静态和动态资源的性能,例如:静态文件,Java Se ...
- JMeter在linux上分布式压测步骤(二)
哈喽,我又来了~ 前提:三台linux虚拟机,一台作为master,另外两台作为slave. 一.server端 1.修改1099端口,client和server通信的端口,可以不修改,默认就是109 ...
- jmeter针对websocket协议的压测
之前一直没有接触过websocket协议,所以一直对websocket的压测存在疑惑,在网上参考文章并不断尝试之后,终于有所得:第一次用jmeter的websoket插件,用的ws非加密协议,请求都能 ...
- Jmeter(十三)阶梯式压测
阶梯式压测,就是对系统的压力呈现阶梯性增加的过程,每个阶段压力值都要增加一个数量值,最终达到一个预期值.然后保持该压力值,持续运行一段时间. Jmeter中有个插件可以实现这个场景,这个插件就是:Co ...
- jmeter实现SMTP邮件协议压测
实现目的 通过jmeter的SMTP取样器,调用SMTP协议,批量进行邮件的发送,已达到压测的目的. 脚本实现 User Defined Variables定义用户变量 编辑SMTP Sampler取 ...
- JMeter使用教程2——MySQL压测
之前写过一篇JMeter使用教程,只是介绍了http请求的压力测试,想到MySQL的测试也挺必要的,于是写下这篇记录一下.如果不知道怎么下载和安装,可以看一下上一篇关于JMeter的文章,地址是:ht ...
- jmeter 插件安装之阶梯式压测(五)
一.Jmeter插件安装 jmeter-plugins-manager-1.4.jar 下载地址:https://jmeter-plugins.org/install/Install/ 下载之后将插件 ...
- Jmeter 之bzm- Concurrency Thread Group 压测
bzm- Concurrency Thread Group 并发线程组代替 jp@gc - Stepping Thread Group线程组. 1. 下载jmeter-plugins-manage ...
- jmeter非GUI模式如何压测并生成测试报告
在启动Jmeter时,我们会看到这样一句提示: 不要使用GUI模式(界面模式)进行负载测试,GUI模式只能用于创建测试和调试.进行负载测试时,需要时用非GUI模式. 那么为什么进行负载测试时一定要用非 ...
- JMeter在linux上分布式压测环境配置(一)
环境配置 一.在Linux服务器先安装SDK 1.先从官网下载jdk1.8.0_131.tar.gz,l(linux版本,32位,64位根据系统来判断) 2.在/usr/目录下创建java文件夹,(当 ...
随机推荐
- VF01/VF11 创建和冲销开票凭证
1.创建开票凭证 1.1.前台 VF01创建开票凭证 1.2.源代码 "--------------------@斌将军--------------------DATA:lt_billing ...
- Clion 中 Rust 插件开启 WSL 调试
Rust Linux 配置 wsl 中执行命令: curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh 按照可能会卡住,需要在本 ...
- Educational Codeforces Round 6 620E. New Year Tree(DFS序+线段树)
题目链接:点击打开链接 题意:给你一棵树,编号1~n,告诉你根结点是1. 每次有两个操作: 1,将以v为根的子树的结点全部染成颜色c 2,问以v为根的紫书的结点的颜色种类. 思路:如果这是一条线段的话 ...
- Serverless 架构下的 AI 应用开发
Serverless架构与CI/CD工具的结合 CI/CD 是一种通过在应用开发阶段引入自动化流程以频繁向客户交付应用的方法.如图所示,CI/CD 的核心概念是持续集成.持续交付和持续部署. 作为一个 ...
- 七、mycat-ER分片
系列导航 一.Mycat实战---为什么要用mycat 二.Mycat安装 三.mycat实验数据 四.mycat垂直分库 五.mycat水平分库 六.mycat全局自增 七.mycat-ER分片 一 ...
- XSS、CSRF 以及如何防范
- vue 中安装使用jquery
https://www.cnblogs.com/tcz1018/p/13970479.html
- uni-app 从入门到放弃(持续更新)
https://blog.csdn.net/weixin_33940102/article/details/91460204
- d3条形图案例
- freeswitch查看所有通道变量
概述 freeswitch 是一款好用的开源软交换平台. 实际应用中,我们经常需要对fs中的通道变量操作,包括设置和获取,set & get. 但是,fs中有众多的内部定义通道变量,也有外部传 ...