【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日

相关文章

  • java8 Math新增方法介绍

    Java8 Math新增方法介绍 Java8中Math类新增了一些数学方法,让我们能够更加便捷地进行数学计算。这篇文章将介绍Java8 Math新增的一些常用方法,以及相应的示例说明。 Math.addExact(int x, int y) 这个方法是将两个int类型的数相加,并返回它们的和。如果溢出,即产生一个结果超出了int类型的最大值或最小值范围,将会…

    Java 2023年5月26日
    00
  • java合并多个文件的两种方法

    当我们需要合并多个Java文件时,通常有两种方法可供选择:手动合并和使用命令行工具合并。下面我将详细讲解这两种方法的具体操作步骤。 方法一:手动合并 手动合并Java文件需要按照以下步骤进行: 新建一个名为合并后Java文件的空文件 将需要合并的多个Java文件中的代码复制到合并后的Java文件中,按照需要合并的顺序逐一复制,确保没有重复代码。 下面是一个示…

    Java 2023年5月20日
    00
  • 一文详解RocketMQ-Spring的源码解析与实战

    摘要:这篇文章主要介绍 Spring Boot 项目使用 rocketmq-spring SDK 实现消息收发的操作流程,同时笔者会从开发者的角度解读 SDK 的设计逻辑。 本文分享自华为云社区《RocketMQ-Spring : 实战与源码解析一网打尽》,作者:勇哥java实战分享。 RocketMQ 是大家耳熟能详的消息队列,开源项目 rocketmq-…

    Java 2023年4月25日
    00
  • 使用JDBC连接Mysql数据库会出现的问题总结

    使用JDBC连接Mysql数据库会出现的问题总结 JDBC是Java针对各种关系型数据库提供的一种标准的接口,可以大大简化Java程序连接数据库的开发工作。但是,在使用JDBC连接Mysql数据库的过程中,常常会遇到一些问题。本篇攻略将会针对常见的问题进行总结,并给出相应的解决方案。 1. ClassNotFoundException 该异常通常在程序中出现…

    Java 2023年5月20日
    00
  • Java 中限制方法的返回时间最新方法

    下面我将详细讲解“Java 中限制方法的返回时间最新方法”的完整攻略。 1. 背景 在某些场景下,我们需要限制某些方法的返回时间,以避免对系统资源的过度占用或者对用户造成不良体验等问题。 然而,Java 原生并没有提供限制方法返回时间的接口或者关键字,因此我们需要通过一些技巧来实现这个功能。 2. 解决方案 2.1 使用 ExecutorService 实现…

    Java 2023年5月20日
    00
  • springboot多项目结构实现

    下面是关于如何实现Spring Boot多项目结构的完整攻略: 1. 什么是Spring Boot多项目结构? 在实际开发中,有时候我们需要在一个应用中多个不同的模块,可以将不同的模块分离成不同的子项目,每个子项目可以独立部署,并且方便进行维护和扩展,这就是所谓的Spring Boot多项目结构。 2. 如何实现Spring Boot多项目结构? 2.1 创…

    Java 2023年5月15日
    00
  • spring注解 @PropertySource配置数据源全流程

    Spring注解 @PropertySource 用于加载指定的属性源,是Spring Framework 4.0版本之后提供的新特性。它允许我们从外部文件或环境变量中读取配置信息,灵活地管理我们的应用程序的数据源。 下面是使用 @PropertySource 配置数据源的完整流程: 引入依赖 在项目的 pom.xml 文件中添加以下依赖: <depe…

    Java 2023年6月2日
    00
  • javaweb开发提高效率利器JRebel详解

    JRebel是什么 JRebel是一个Java开发生产力工具,它可以消除Java程序中常见的重启服务、重建工程和重新部署过程。JRebel可以显著提高Java开发者的生产力,让他们将更多的时间花在创造新价值上。 JRebel能做什么 JRebel可以实现Java应用程序的热部署,即在不用重启和重新部署的情况下,将Java代码的变更更新到应用程序中。JRebe…

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