详解Jmeter线程组的设置方法

 更新时间:2021年11月29日 15:39:59   作者:久曲健  
本文主要介绍了Jmeter线程组的设置方法,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

一、事件背景

个人感觉自己做性能测试,可以说是轻车熟路了,而且工作多年一直都是这一套测试思路及体系,从未质疑过自己,也许是狮子座的迷之自信吧!

也就在上周让我对自己的测试方法及体系产生了质疑!

为什么?在性能测试的时候,压测500并发通过,人家40并发都过不去。

通俗点说,就是你测试没问题,在人家那测试出问题了,忽略脚本问题,显而易见因为测试方法差异导致测试结果的不同。

1、关于执行方法的差异

  • 同事的做法是直接跑10分钟的稳定性测试,然后上并发数;
  • 我的做法一个用户循环访问一次,然后上并发数;

2、关于执行结果的差异

  • 同事这种方式比我的方式,对目标服务器的压力更大;
  • 体现在哪,如果循环次数选择了一旦选择了永远,即请求次数会比我的方式多,所以自然压力也大;

3、真的是我测试方法错了吗

我和同事分别测试两个系统,具体还是有些区别的:

  • 同事这边业务场景有40个接口,执行一次最多1分钟,要不就是20秒,具体没记清楚;
  • 我这边的业务场景有76个接口,执行一次大约50分钟,如果我直接上负载测试10分钟,根本跑不完一组业务场景;
  • 我去请教大周老师,老师说正常先要让跑一定的时间,可以查看是否稳定运行及测试结果是否一致准确,性能测试本就是多次测试的结果。

4、结论

我是在最后跑的稳定性测试,是8小时起步,从时间上看覆盖到了他的十分钟,而且压力更大。

但是,有些同学会问他测试的对吗,他的思路是对的,因为他执行一次业务场景,小于10分钟,在小批量并发测试师没问题的。

当然,如果并发量上来后,还是设置十分钟的话,会出现我那种情况 业务场景接口没执行完的情况,此处,大家自行尝试见分晓。

二、关于线程组的相关设置

我又去查了大量资料,终于找到了一篇我觉得比较在理的文章,并举例给大家演示,我觉得这个同学的理论好像是对的,因为我也测试了下,发现也吻合我的测试结果(算求生存吗?)!
下面我将举例说明,该方法。

1、执行第一次数据采样,得到吞吐率和平均响应时间

由图可知:

吞吐率=2.6≈3,平均响应时间:t=0.386秒;

2、计算ramp-up period

假设线程N=10,估计的吞吐率=3, 那么估计的理想ramp-up period (T)(可以理解为线程启动的准备时间)= 10/3 = 3 秒。

3、循环次数计算

现在计算循环次数A。由于我们要考虑在第一个线程结束的时候,确保最后一个线程能启动,那么至少要大于一个值,这个值定位S=T-T/N=3-3/10=2.7。

当时间到 S=(T-T/N)时,最后一个线程启动,若要使所有线程同时运作,则需要在最后一个线程启动的时候第一个线程仍未关闭,为达到这个要求,需满足A > S/t
A>2.7/0.386=6.994≈7次 A>(T-T/N)/t

4、得出的测试方案

那么我们的测试方案如下:

5、关于公式

到此这篇关于详解Jmeter线程组的设置方法的文章就介绍到这了,更多相关Jmeter线程组设置内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java 中的 xx ≠ null 是什么新语法

    Java 中的 xx ≠ null 是什么新语法

    Java中null是一个关键字,用来标识一个不确定的对象。因此可以将null赋给引用类型变量,但不可以将null赋给基本类型变量。本文给大家分享Java 中的 xx ≠ null 是什么新语法,感兴趣的朋友一起看看吧
    2021-06-06
  • SpringBoot Maven打包失败报:class lombok.javac.apt.LombokProcessor错误的解决办法

    SpringBoot Maven打包失败报:class lombok.javac.apt.Lombo

    最新项目部署的时候,出现了一个maven打包失败的问题,报:class lombok.javac.apt.LombokProcessor错误,所以本文给大家介绍了如何解决SpringBoot Maven 打包失败:class lombok.javac.apt.LombokProcessor 错误,需要的朋友可以参考下
    2023-12-12
  • Spring Boot+Mybatis的整合过程

    Spring Boot+Mybatis的整合过程

    这篇文章主要介绍了Spring Boot+Mybatis的整合过程,需要的朋友可以参考下
    2017-07-07
  • Java 根据某个 key 加锁的实现方式

    Java 根据某个 key 加锁的实现方式

    日常开发中,有时候需要根据某个 key 加锁,确保多线程情况下,对该 key 的加锁和解锁之间的代码串行执行,这篇文章主要介绍了Java 根据某个 key 加锁的实现方式,需要的朋友可以参考下
    2023-03-03
  • Java代码注释规范详解

    Java代码注释规范详解

    代码附有注释对程序开发者来说非常重要,随着技术的发展,在项目开发过程中,必须要求程序员写好代码注释,这样有利于代码后续的编写和使用。下面给大家分享java代码注释的规范,需要的朋友参考下
    2016-02-02
  • Spring Bean的定义概念和使用

    Spring Bean的定义概念和使用

    这篇文章主要介绍了Spring Bean的定义概念和使用,Spring bean对象是构成应用程序的支柱,也是由Spring IoC容器管理的。bean是一个被实例化,组装,并通过Spring IoC容器所管理的对象。这些bean是由用容器提供的配置元数据创建的
    2023-04-04
  • 利用Java实现在PDF中添加工具提示

    利用Java实现在PDF中添加工具提示

    这篇文章主要介绍了如何通过Java在PDF中添加工具提示,文中的示例代码讲解详细,对我们学习或工作有一定的参考价值,感兴趣的可以学习一下
    2022-01-01
  • 关于SpringBoot的spring.factories文件详细说明

    关于SpringBoot的spring.factories文件详细说明

    spring.factories 文件是 Spring Boot 自动配置机制的核心部分之一,它位于每个 Spring Boot 自动配置模块的 META-INF 目录下,经常看到 spring.factories 文件,却没有对它进行深入的了解和分析,今天我们就一起揭开面纱看看它的内在,需要的朋友可以参考下
    2024-12-12
  • 学习SpringMVC——如何获取请求参数详解

    学习SpringMVC——如何获取请求参数详解

    本篇文章主要介绍了SpringMVC——如何获取请求参数详解,详细的介绍了每种参数注解的用法。具有一定的参考价值,感兴趣的小伙伴们可以参考一下。
    2016-12-12
  • 探讨Java中的深浅拷贝问题

    探讨Java中的深浅拷贝问题

    这个概念估计懂C++的人不会陌生,但是很多朋友并不了解,概括起来将浅拷贝就是指两个对象公用一个值,一个的改变了另一个也会随之改变,深拷贝则是两个对象值相等,但是相互独立互不影响。下面我们将关于java的浅拷贝和深拷贝做一个详细讲解
    2021-06-06

最新评论