jmeter模拟spike测试(尖峰测试)

释放双眼,带上耳机,听听看~!

概述

尖峰测试(Spike testing)在性能测试中属于压力测试的一个子集。指的是在某一瞬间或者多个频次下用户数和压力陡然增加的场景。

为了验证我们的网站在访问用户急剧增加的情况下,或者短时间内反复急剧增加工作负载时能否正常工作;以及程序能否从高负荷中恢复并正常工作时常常用到这种测试手法。

Spike在英文中是钉子的意思,或者我们可以将其称之为冲击测试,反复冲击服务器。

 

常见的场景有

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


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


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


等等。。。。

 

现在我们假设有这样一个场景

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

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

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

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

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

 

测试方案设计

我们知道,jmeter中的基础线程组用来构成对服务器的压力。

我们在添加定时器之后,可以模拟出某一瞬间的压力。

但是这种线程组只能模拟出一个尖峰,如果我们想要模拟出那种浪潮式的场景,它不能满足我们的要求。

jmeter模拟spike测试(尖峰测试)

 

jmeter提供了另一个线程组满足我们的测试需求

Ultimate Thread Group(终极线程组)

 听起来是不是有点高端?下面我们来了解一下它的用法

jmeter模拟spike测试(尖峰测试)

 

 

 如图所示

启动的线程数量(Start Threads Count),也就是访问的用户数

延迟时间(Initial Delay,秒),也就是压力到达的时间

压力释放时间(Startup Time,秒),也就是为了满足预期压力而释放线程所需要的时间

压力满足之后持续运行的时间(Hold Load For,秒)

释放掉压力需要的时间(Shutdown Time,秒)

每一个Thread schedule 都是一个线程组。因此我们可以把这个终极线程组理解为多个基础线程组的压力叠加

 

图中我们模拟出了四个spike场景

 在第一批1000用户访问完毕的时候,第二批2000用户的压力又开始增加,第二批2000用户压力释放之后,第三批3000用户的压力又开始增加。。。。

 

下图是单位时间内活动的真实线程数,可以看出在中间两个批次压力下,线程根本来不及释放掉

jmeter模拟spike测试(尖峰测试)

 

结合tps监听和聚合报告可以看出,spike场景测试下,有很多事物没有正确响应,错误率达到了20.78%

jmeter模拟spike测试(尖峰测试)

jmeter模拟spike测试(尖峰测试)

 

给TA打赏
共{{data.count}}人
人已打赏
随笔日记

【杂谈】从底层看锁的实现2

2020-11-9 5:38:14

随笔日记

Unity AssetBundle,Asset,GameObject之间的联系

2020-11-9 5:38:16

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索