【Jmeter】按比例分配Api压测

先看

【Jmeter】基础介绍-详细

【Jmeter】Request1输出作为Request2输入-后置处理器

继续聊提出的第二个问题,即

  2.需要按比例分配API请求并发,以模拟真实的API压力场景

做压测的时候,一般的需求都是多个API同时压,不然也看不出真正的tps是多少啊。

比如虽然接口a的需求并发不高,500个用户才请求一次,但是特别耗性能,导致其他接口tps下降严重,所以压测的时候可以将比例调的很小,但是不能忽略它,只测并发请求高的接口

说会主题,如何按比例分配压测并发量呢?使用Jmeter可以有两种实现方式

先说第一种,通过线程组的方式控制:

线程组1配置:

【Jmeter】按比例分配Api压测

 线程组2配置:

【Jmeter】按比例分配Api压测

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

Request请求:

【Jmeter】按比例分配Api压测

 结果:

【Jmeter】按比例分配Api压测

 这里哪个请求在前完全随机,两个线程中互不干扰。

这种方式的好处就是完全并行,互不干扰,缺点就是基本没有使用场景,一般情况下,API都是有权限认证接口的,后面的接口需要依赖前面接口的输出(实现方式可以看【Jmeter】Request1输出作为Request2输入-后置处理器),这种完全隔离的方式显然无法满足需求,或者你需要自己写代码提前获取登录信息,不使用压测过程中登录返回的认证信息。

我们继续介绍第二种方式,其实就是按【Jmeter】Request1输出作为Request2输入-后置处理器中创建的线程组一样,只使用一个线程组,然后通过循环控制器来控制某个Api所占比例:

新建循环控制器:

【Jmeter】按比例分配Api压测

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

【Jmeter】按比例分配Api压测

【Jmeter】按比例分配Api压测

 执行效果:

【Jmeter】按比例分配Api压测

 如上图所示,执行了一个Request1和两个Request2,而且是按顺序执行的,即这种方式可以满足【Jmeter】Request1输出作为Request2输入-后置处理器需求的同时使用。不过有两点需要注意:

  1. 这种方式按顺序执行时,变量(例如身份信息token)是会被覆盖的,即无法完全模拟多用户登录及身份信息的场景。
  2. 这种配置方式会导致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内逐步启动,达到所有线程的启动时间覆盖第一个线程一次循环的整个时间段,来达到真实模拟多种请求并发执行的过程,解决以上提到的第二个问题。

 

原文链接:https://www.cnblogs.com/maerpao/p/17347084.html

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:【Jmeter】按比例分配Api压测 - Python技术站

(0)
上一篇 2023年4月25日
下一篇 2023年4月25日

相关文章

  • Spring Boot 使用 SSE 方式向前端推送数据详解

    Spring Boot 使用 SSE 方式向前端推送数据详解 概述 Server-Sent Events (SSE) 是一种基于 HTTP 协议的服务器推送技术,可以将服务器端的实时数据流推送给客户端,常用于构建实时通讯、监控等场景。Spring Boot 提供了很好的支持,可以方便地将 SSE 技术应用于开发中。 步骤 1. 添加依赖 在 pom.xml …

    Java 2023年6月3日
    00
  • java怎么创建目录(删除/修改/复制目录及文件)代码实例

    要在Java中创建、删除、修改和复制目录及文件,可以使用Java中自带的File类和方法。下面将在markdown文本中详细讲解此过程。 1. 创建目录 要在Java中创建一个新目录,可以使用如下代码: File dir = new File("path/to/directory"); boolean isCreated = dir.mk…

    Java 2023年5月20日
    00
  • 利用java读取web项目中json文件为map集合方法示例

    以下是“利用java读取web项目中json文件为map集合方法示例”的完整攻略: 1. 引入依赖 首先需要引入jackson的依赖,可以使用Maven等项目管理工具来自动引入依赖,也可以手动下载jar包引入到项目中。具体的依赖代码如下: <dependency> <groupId>com.fasterxml.jackson.core…

    Java 2023年5月26日
    00
  • Java日常练习题,每天进步一点点(40)

    下面是Java日常练习题的完整攻略: 1. 确定目标 我们的目标是通过做Java练习题来提高自己的编程能力,每天进步一点点。 2. 获取练习题 可以通过互联网上的Java编程练习网站,如Java编程练习网站等获取练习题。 3. 分析题目 在开始解题之前,请认真阅读题目并分析,确定题目的输入、输出、边界条件和算法思路。 4. 用Java代码实现 在分析完题目后…

    Java 2023年6月15日
    00
  • Java布局管理器使用方法

    下面是“Java布局管理器使用方法”的完整攻略,包括两条示例说明。 什么是布局管理器 在Java图形用户界面(GUI)开发中,布局管理器是用于自动排列和调整GUI组件位置的工具。如果你不使用布局管理器,在不同的屏幕上可能会出现组件重叠的情况,布局管理器可以很好地解决这个问题。 Java提供了几种不同的布局管理器,每一种都有其独特的特点和适用场景。下面我们将详…

    Java 2023年6月15日
    00
  • 替换jar包未重启引起的系统宕机事件

    一、事件背景: 某天凌晨,一阵急促的铃声将我从周公那里拉了过来,接听电话后,一脸懵逼。 什么情况?XX后台宕机了?当日日志也不打印了,前端发起的请求,都报超时,重启后又恢复了,不清楚会不会再次宕机。 出现这种情况,我第一时间想的是为什么是00:00:00宕机?难道后台嫌我这个大龄程序员睡得早了? 然后是通过远程视频,看日志,排查了凌晨之前的日志里的所有异常,…

    Java 2023年4月18日
    00
  • Midjourney 提示词工具(10 个国内外最好最推荐的)

    Midjourney,是一个革命性的基于人工智能的艺术生成器,可以从被称为提示的简单文本描述中生成令人惊叹的图像。Midjourney已经迅速成为艺术家、设计师和营销人员的首选工具(包括像我这样根本不会设计任何东西的无能之辈)。 为了帮助你开始使用这个强大的工具,我们汇编了一份15个资源的清单,可以帮助你为你的下一个项目制作更好的提示语……或者让我们…

    Java 2023年4月22日
    00
  • Java如何取掉json数据中值为null的属性字段

    当在处理JSON数据时,我们可能会遇到一些值为null的属性字段,而它们并不是我们所需的数据,因此需要将其取掉。 下面给出Java取掉JSON中值为null的属性字段的完整攻略: 使用Jackson库进行JSON处理 Jackson库是一种常用的Java库,它提供了许多处理JSON数据的方法。我们可以使用Jackson库读取JSON字符串并将其转换为Java…

    Java 2023年5月26日
    00
合作推广
合作推广
分享本页
返回顶部