专栏首页橙子探索测试Jmeter模拟真实用户压测场景之阶梯螺纹线程组、终极线程组、并发线程组实例

Jmeter模拟真实用户压测场景之阶梯螺纹线程组、终极线程组、并发线程组实例

我们有时需要模拟非常真实复杂的用户压测场景,可以用到此插件来设计场景

1、安装插件,选项——Plugins Manager打开安装页面

2、搜索standard set并安装,重启jmeter,查看测试计划——添加线程组——jp@gc - Stepping Thread Group (deprecated

3、Stepping Thread Group复杂场景线程组

This group will start 100 threads【(并发数)设置单台负载机,线程组启动的线程总数为100个】

First,wait for 2 seconds【等待2s后开始起线程】

Then start 3 threads【设置最开始时启动3个线程】

Next,add 10 threads every 30 seconds,using ramp-up 5 seconds:每隔5秒,在5秒内启动10个线程【5s启动10个线程运行30s,再5s启动余下10个线程,再运行30s,以此类推】

Then hold load for 60 seconds【单台负载机启动的线程总数达到最大值100线程后,再持续运行60秒(一直在请求,相当于jmeter普通线程组里面的循环运行)】

Finally,stop 5 threads every 2 seconds【5个线程停1次,等2s再停5个线程】

举个例子:一个线程组下包含了登陆和抽奖两个接口

1、继续:如果登陆接口失败,会继续执行抽奖接口

2、start next thread loop:主要针对循环次数>=2的时候。在loop1的时候,如果登陆接口失败,会停止loop1开始loop2,重新执行循环接口;所以如果循环次数设置为1的时候,其实就是结束了线程。

3、停止线程:比如有50个线程,循环次数=2;线程2的登陆接口失败之后,直接停止线程2,不再循环

4、停止测试:如果接口失败就停止线程,但是已经执行中的线程需要等结束之后自动停止

5、stop test now:立刻停止所有线程,包括已经执行中的线程。

6、this group will start:表示总共要生成的线程数,如图:设置为20000个,表示总共会加载到20000个线程

7、first,wait for:第一个线程从点击执行之后多长时间开始加载,如图:设置为0秒,表示点击执行之后立即执行

8、then start:初次加载多少个线程,如图:设置为1000个,表示初次会加载1000个线程(在60秒内)

9、next add:之后每次加载多少个线程,如图:设置为5000个,表示每次多加载5000个线程

10、threads every:当前运行多长时间后再次加载线程,及每一次加载完成之后的持续时间,如图:设置为600秒,每次加载完之后持续执行600秒

11、using ramp-up:加载线程的时间,如图:设置为60秒,表示每一次加载需要在60秒内完成

12、then hold load for:线程全部加载完之后运行多长时间,如图:设置为300秒,表示最后20000个线程加载完之后再持续300秒

13、finally,stop/threads every:每多长时间停止多少个线程,如图:设置为10个和1秒,表示每1秒钟停止10个线程

4、Ultimate Thread Group终极线程组、阶梯线程组

提供了一个'Threads Schedule' 线程计划表,您可以在其中配置不同的线程组。您可以决定

线程数量('Start Threads Count')

每组开始添加到测试执行之前的延迟('Initial Delay,sec')

线程组的加速期('Startup Time') ,sec')

在减速前线程组的持续时间('Hold Load For,sec')

所有线程组应该关闭的速度('Shutdown Time')

所有线程组同时启动,但每个线程组都有自己的Intial Delay“初始延迟”值,这有助于分别从每个组中分离用户。

示例一:

最后的10s停止阶段,每s停止30线程

示例二:模拟浪潮式的压测场景

常见的场景:

12306开始售票时用户急剧增加

网站公布高考成绩、录取分数时,用户急剧增加

网站投放商业促销广告和促销活动,如双11和618等活动开始时,用户急剧增加

并发的用户就像浪花一波一波的不断涌入系统,拍打服务器,考验我们的系统能否顶住压力并平稳运行

我们的网站正在平稳运行的时候,突然有一波1000用户同时访问,我们称之为第一浪潮。访问了30s之后,第一浪潮在15s内逐渐退出系统。

在第一浪潮退出系统的同时,第二波2000用户在极短时间内又突然涌入网站,我们称之为第二浪潮。在访问30s之后,第二浪潮在15s内也逐渐退出了系统。

在第二浪潮退出系统的同时,第三波3000用户又突然涌入网站,我们称之为第三浪潮。在访问30s之后,第三浪潮在15s内也逐渐退出了系统。

在第三浪潮退出系统的同时,第四波1000用户又突然涌入网站,我们称之为第四浪潮。在访问30s之后,第四浪潮在15s内也逐渐退出了系统。

5、并发线程组bzm - Concurrency Thread Group阶梯式加压

Target Concurrency:目标并发(线程数)

Ramp Up Time:加速时间

Ramp-Up Steps Count:加速步骤计数

Hold Target Rate Time:保持目标速率时间

Time Unit:时间单位(分钟或者秒)

Thread Iterations Limit:线程迭代次数限制(循环次数)

Log Threads Status into File:将线程状态记录到文件中(将线程启动和线程停止事件保存为日志文件);

本文分享自微信公众号 - 橙子探索测试(chengzitest),作者:王荔探索测试

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-07-04

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 【Jmeter篇】五种参数化方式之CSV Data Set Config参数化

    当线程设置线程数4个,会循环参数1 2 3 1;当循环设置4次,会循环参数1 4次;当线程设置2个,循环设置5次,会参数1和2分别循环5次

    橙子探索测试
  • 进程与线程

      进程是表示资源分配的基本单位,又是调度运行的基本单位。例如,用户运行自己的程序,系统就创建一个进程,并为它分配资源,包括各种表格、内存空间、磁盘空间、I/O...

    橙子探索测试
  • Python多线程之线程锁(Lock)和递归锁(RLock)实例

    Threading模块为我们提供了一个类,Threading.Lock锁。我们创建一个该类对象,在线程函数执行前,“抢占”该锁,执行完成后,“释放”该锁,则我们...

    橙子探索测试
  • java学习笔记(基础篇)—线程

    线程是程序执行的最小单位,是动态的。 进程是系统进程资源分配和系统调度的最小单位,是动态的。 线程和进程的目的:多任务--->效率高

    chlinlearn
  • 线程池

    不光是线程池,池化思想在诸多地方有着很好的应用,比如对象池、连接池等等。。一般运用池化思想的都是一些比较消耗系统资源的操作,通过池化,可以降低内存消耗,并且可以...

    AlbertZhang
  • 线程池ThreadPoolExecuter使用详解

    使用过jdk自带线程池或者看过源码的都知道,jdk1.5版本引入了并发包,线程池就是其中一个比较重要的内容,所谓线程池和连接池以及其他池子一样,其核心概...

    Typhoon
  • 面试官:Java线程池了解?如果你还回答不好,那还不赶快收藏!

    本文将根据面试中常被问到的 Java线程池 展开抽丝剥茧的解析,这个问题可以说是百分之百会在Java程序员面试中被问到,因为在工作中这个需求实在是太普遍了。Ja...

    捡田螺的小男孩
  • 操作系统概念学习笔记 9 线程

    线程是CPU使用的基本单元,它由线程ID、程序计数器、寄存器集合和栈组成。它与属于统一进程的其他线程共享代码段、数据段和其他操作系统资源。

    种花家的奋斗兔
  • 面试官:怎样去运用线程池?工作中如何使用?

    工作中,我们有时候需要实现一些耗时的任务。比如:将 Word 转换成 PDF 存储的需求。

    业余草
  • 【Java线程】“打工人”初识线程池及自定义线程池实战

    聊一下为什么要使用线程池? 程序的运行本质,就是通过使用系统资源(CPU、内存、网络、磁盘等等)来完成信息的处理,比如在JVM中创建一个对象实例需要消耗CPU...

    沁溪源

扫码关注云+社区

领取腾讯云代金券