概述
在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
spa
如图1-1,勾选循环永远的意思就是不限制单位时间内的迭代次数,以此加载最大压力。
注:若是循环次数设置了固定值,那么下发那个持续时间的设置是无效的。线程组会优先根据你的固定循环次数去执行迭代。也就是说,固定循环次数的执行顺序优于持续时间!可是若是循环次数设置为永远,再设置持续的时间,那么就会根据你的持续时间去加载最大的压力。.net
事物完成线程组(TPS线程组)
针对需求2,jmeter额外提供了一个线程组去知足它-- Arrivals Thread Group。在这个线程组中咱们给予预期的业务量和业务时间,系统会自动启动线程去知足业务需求。线程
1-23d
如图1-2,表示个人预期tps是50/s,在2s内达到预期值,同时保持这个tps运行20s,那么22s内个人业务量是22*50=1100orm
1-3
如图1-2,最大的系统并发数(启动的线程数)是319
总结
咱们作性能测试,压力都是人为给予系统的。使用工具的目的也是为了模拟出用户的压力场景
本文分享自微信公众号 - 测试驿栈(uhz2008_2008)。
若有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一块儿分享。