失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > centos 并发请求数_彻底理解 jmeter 的线程数与并发数之间的关系

centos 并发请求数_彻底理解 jmeter 的线程数与并发数之间的关系

时间:2022-12-24 02:39:03

相关推荐

centos 并发请求数_彻底理解 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

总结

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

如果觉得《centos 并发请求数_彻底理解 jmeter 的线程数与并发数之间的关系》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。