关于JMeter线程组中线程数,Ramp-UpPeriod,循环次数
关于JMeter线程组中线程数,Ramp-Up Period,循环次数之间的设置概念
苏州话童谣
笔者是个刚刚踏⼊压⼒领域不到2个⽉的⼩菜,这⾥分享⼀下线程组中3个参数之间关系的个⼈见解,不喜请!喷!,望⼤家给出宝贵的想法。
斯诺克桌球假设:
线程数:n
西游记女儿国国王扮演者
Ramp-Up Period:T (有⼈称之为启动时间,有⼈说是准备时长,看个⼈喜好)实习指导老师评语
循环次数:a
若每个循环运⾏时间是 t
当时间到 S = (T- T/n)时,最后⼀个线程启动,若要使所有线程同时运作,则需要在最后⼀个线程启动的时候第⼀个线程仍未关闭,为达到这个要求,需满⾜ a·t > S及a > S/t
每⼀个个线程运⾏时间既是R = a·t(此处的a是⼤于S/t的某⼀值),则第⼀个线程在时间点为R 的时候停⽌,整个测试理论运⾏时间则
是:S + R = (1-1/n)·T + a·t
总结:贺卡手工
测试中变量是线程数 n ,每个循环时间 t 是个实践值,循环次数 a 只是为了延长单个线程的运⾏时间,从⽽保证当最后⼀个线程启动时,所有线程都在运⾏中,达到压测效果。
汤字成语以上是我个⼈的总结,额,什么?看不懂!其实笔者写完了也晕了,下⾯我们⽤确切的数值进⾏试验
我们设置线程数 n = 5,循环次数a = 1000,请求,得到聚合报告如图:
图中得到⾕歌⾸页的平均请求时间⼤约为t = 0.2秒
这⾥,我们为了⽅便分析,将Ramp-Up Period 设置为T = 10秒(实际合理的时间后⾯会说明)
依然是n = 5,得到 S = (T- T/n) = 8 ,也就是说,从第⼀个线程启动到第8秒的时候,最后⼀个线程开始启动,若需要在最后⼀个线程启动的时候第⼀个线程仍未关闭,则需要满⾜ a·t > S ,已知S = 8,t = 0.2,得到 a > 40 。
OK,既然循环次数要⼤于40,我们不妨把循环设置成100,那么单个线程运⾏时间就是R = a·t = 20秒,
也就是说第⼀个线程会在第20秒的时候停⽌,整个测试的理论运⾏时间为 S + R = (1-1/n)·T + a·t = 28秒
我们⽤⼀张图来直观的看看每个线程的运⾏情况
从图中可以得到从第8秒开始,到第20秒,5个线程同时在运⾏中,此时才是真正的模拟5个⽤户同时并发
赞美女人的诗>顺产生孩子