之前一直在纠结于并发数的问题,我一直都混淆了,并发数、每秒并发数、每秒完成请求数的概念。今天终于头脑稍微清醒了一点,就记录下来我的感悟。如有错误之处,请大家指正。其实我也只是一直小菜鸟。感谢JMeter交流群的大神们,我有引用你们的原话,希望不会介意。
首先说一下,并发数。并发数就是在线程组设置的线程数。
这里的线程数实际就是模拟的用户数。有多少个用户来执行请求。
Ramp-Up Period 的时间指的是在多少秒内启用所需模拟的用户(可怜我一直以为是持续执行时间)。这个时间不能太长,太长则会出现之前的用户已经执行完了要操作的请求结束掉了,但其他的还没启动起来。但也不能太短,太短则会产生太大的压力,缓慢加压也是压力测试的准则之一。具体的度,我还在摸索,后续会再写出来。
再有就是step的循环设置。
step中的循环,即代表每个模拟用户要执行该请求的次数。举例,模拟用户数是2400,循环为1.模拟用户是1200,循环是2.
在聚合报告中,显示的sample都是相等的。但是在请求是多个的时候,压力是不一致的,循环为1时,是2400个人同时争着去完成所要执行的请求。循环为2时,是1200个人,排着队去完成请求。
比如第一种 情况,并发6个线程,6s启动。,那么情况是这样的
第二种的话,并发6个,3s启动,循环设置2,那么是这样的
(这两张图让我的印象特别深)
那么该如何算去压测呢。之前我的领导一直执着于问我每秒并发数,我也就一直执着去寻找答案。但事实证明,JMeter中是没有每秒并发数的概念的。我就转换了概念,取了聚合报告中的Throughput,即每秒成功完成的请求数。具体的压测设置我是这样设置的,并发数设置一个值如3400,启动时间设为10s(这得看具体情况),设置step的循环为永远。添加runntime cotroller 设置持续运行时间为30分钟(时间过短,服务器还没有稳定)。这就等于说模拟了3400个用户,在30分钟内循环执行请求。最后查看聚合报告值中的90%响应时间,最大值和最小值,错误率,和throughput值。这样的思路进行的压测,更平均些。