jmeter 模拟2000人在一段时间内进入,随后每人固定每隔30s发送一次请求。

最近接到一个性能测试场景:视频直播观看功能,在直播间中有一个“获取观看人数”的接口,在观看人进入直播间开始,每隔30s会调用一次。需要验证是否能承受2000人同时在直播间观看,如若不满足,最大能承受的人数是多少?

对于jmeter只能浅浅使用的性能测试小白,这个场景当然是考虑了很久的,也在各大博主的文章中反复横跳理解。终于皇天不负有心人,我觉得我是找到了正确的办法。如果下面的方法有不对的地方,以及我的理解对于上面提到的场景有偏差,请大家不吝赐教,多多提点爱学习的花花,谢谢大家啦!

下面来说说我认为正确的办法:

需要使用的组件:

1.线程组

2.http代理

3.查看结果树

4.聚合报告

5.固定定时器

6.常数吞吐量定时器

一开始卡住的原因,我一直以为不管线程何时启动,固定定时器会集合所有的线程数,一起在30s后发送请求,这样就违背了2000人会时间不一地进入直播间,应该是从每个线程的启动时间开始算30s,所有2000人不可能是同时调用请求的。后来通过实验发现,固定定时器会区分每个线程,从每个线程的启动时间开始,往后推30s左右发送请求,正和我的场景。

分析:

2000人/30s,那么每秒约等于需要请求66.7次。为了防止吞吐量太高,导致服务器负载过大,可以使用常数吞吐量定时器限制吞吐量,只需要限制到我们需要的吞吐量大小就行,大约67/sec。

 步骤:

1.添加线程组,线程数2000,启动时间10s,持续时间600ms

2.添加http代理,使用代理录制要测试的接口。

3.线程组下添加查看结果数、聚合报告

4.接口下添加固定定时器,时间间隔设置30000ms

5.线程组下添加常数吞吐量定时器,设置吞吐量67/sec

6.如果响应值是乱码,可以在请求下添加BeanShell后置处理程序,脚本如下

最后启动起来,关注聚合报告就行啦,查看实际能达到的吞吐量,以及错误率是否在可接受范围内,服务器此时的情况,原先页面是否可以正常访问,是不是崩了。

我的发现错误率一半了,并且吞吐量到不了67/sec,服务器也崩了,达不到性能需求。

接下去就是减少每秒调用的线程数了,比如50个每s。那么就是1500个线程,10分钟内启动,持续600s,固定定时器间隔不变,常数吞吐器每分钟样本量3000.

如果还是不行就继续往下减,建议每次测试之前重启服务,或者等待时间稍长一点进行下一次测试,不然服务器承受不来。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值