jmeter最大请求数_性能测试连载 (13)-彻底理解 jmeter 的线程数与并发数之间的关系...

概述

在jmeter中,只要提到并发,99%的同学立马想到线程组。需要多少并发就启动多少线程组,这已经成了大部分人的共识。这种理解方式很明显是把并发数和线程数的概念混淆了。线程组中不光有线程数,也有循环次数。然而大家在负载测试中都主动的忽略了循环的作用。jmeter中的循环和lr中的迭代是一样的,都是为了模拟出压力,不要选择性无视它

实验

先列出下面两个需求,大家可以思考一下这两个需求在jmeter里面如何设置场景

需求1:我有一个页面,需要测试一下最大支持多少用户并发?

此时要计算的是最大用户并发数,强调的是同时操作,也可以理解为同时发起请求针对需求1我们可以通过RPS 定时器或者阶梯加压线程组测试每秒最大的请求数(压测实战分析性能拐点)

需求2:查询功能,需要系统能够在5分钟内能完成5000笔查询业务,同时90%的用户响应时间不超过3s。最大并发是多少?

此时不强调同时操作,而是强调业务量。也就是说不限制用户的操作时序,不考虑人的效率。把人当做机器,只要在5分钟内查询数满足5000笔即可。但是具体有多少用户才能在5分钟内查询5000次?它是由单次响应时间来决定的。这时就引入了一个经常被人讨论的公式:最大并发数= (单次响应时间*业务量)/总的业务时间。我的单次响应时间越快,用户每秒可点击的次数就越多,那么需求就越容易满足。

线程数和并发数

针对需求2,我们如何在jmeter中设置场景?由上面的描述可以知道,我们可以计算出最大并发数。那么这个最大并发数对应的就是jmeter中的线程数。光有线程数不行,此时又引入了一个迭代的概念。假设单线程下,单次请求的平均响应时间是200ms,那么这个单线程的请求1s内可以迭代5次。如果有100个线程,那么1s内就可以完成500笔业务。5分钟内完成的业务数就是5*60*500=15万笔。回到我们需求2,是不是远远超纲了?把线程数缩小,其实只需要4个线程,就可以在5分钟内超额完成5000笔业务了。4*5*5*60=6000

1-1

如图1-1,勾选循环永远的意思就是不限制单位时间内的迭代次数,以此加载最大压力。注:如果循环次数设置了固定值,那么下发那个持续时间的设置是无效的。线程组会优先根据你的固定循环次数去执行迭代。也就是说,固定循环次数的执行顺序优于持续时间!但是如果循环次数设置为永远,再设置持续的时间,那么就会根据你的持续时间去加载最大的压力。

事物完成线程组(TPS线程组)

针对需求2,jmeter额外提供了一个线程组去满足它-- Arrivals Thread Group。在这个线程组中我们给予预期的业务量和业务时间,系统会自动启动线程去满足业务需求。

1-2

如图1-2,表示我的预期tps是50/s,在2s内达到预期值,同时保持这个tps运行20s,那么22s内我的业务量是22*50=1100

1-3如图1-2,最大的系统并发数(启动的线程数)是319

总结

我们做性能测试,压力都是人为给予系统的。使用工具的目的也是为了模拟出用户的压力场景

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值