理解Jmeter中线程组的线程属性
设计场景第一!!
线程数:配置几个就代表有几个虚拟用户
Ramp-Up 时间(秒):表示从第一个虚拟用户开始生成直到最后一个虚拟用户开始生成的时间,加入配置了5个虚拟用户,Ramp-Up 设置成10s,那么jmeter会每隔2s生成1个虚拟用户,这个选项主要的作用是控制并发的强度,不让虚拟用户在同一时间产生从而对系统造成多大的复杂,Ramp-Up设置成0,那么所有用户将会同时立即产生
循环数:要么是N次,要么是永远
调度器:就是定时执行的设置方式。我们可以设置在未来的某个时间开始执行也可以设置多少秒后开始执行。
注意:你只有在按下执行按钮后,调度器才生效
场景分析
微博:访问量相对均匀
钉钉:打卡上午8~9点,下午5~6点有大量访问量(一段时间的虚拟用户多)
秒杀
一个线程的生命周期
有循环N---->销毁(destory) 例如:一个用户进来买3个东西,此时就是循环3次
永远,一直跑 例如:一个用户进来一直点击,就设置成永远
只执行一次---->销毁(destory) 例如:钉钉打卡玩完就退出
如何确定一个合理的ramp-up 时间?
确定一个合理的ramp-up period 的规则就是让初始点击率接近平均点击率。当然,也许需要运行一些测试来确定合理访问量。
基于同样的原因,过大的ramp-up period 也是不恰当的,因为将会降低访问峰值的负载,换句话说,在一些线程还未启动时,初期启动的部分线程可能已经结束了。
那么,如何检验ramp-up period I太小了或者太大了呢?
首先,推测一下平均点击率并用总线程除点击率来计算初始的ramp-up period。 例如,假设线程数为100, 估计的点击率为每秒10次, 那么估计的理想ramp-up period 就是 100/10 = 10 秒。 那么,应怎样来提出一个合理的估算点击率呢?没有什么好办法,必须通过运行一次测试脚本来获得。
其次, 在测试计划(test plan)中增加一个聚合报告监听器,如图2所示,其中包含了所有独立的访问请求(一个samplers)的平均点击率。 第一次取样的点击率(如http请求)与ramp-up period 和线程数量密切相关。通过调整ramp-up period 可以使首次取样的奠基率接近平均取样的点击率。
第三, 查验一下Jmeter日志(文件位置:JMeter_Home_Directory/bin) 的最后一个线程开始时第一个线程是否真正结束了,二者的时间差是否正常。
总之,是否能确定一个适当的ramp-up time 取决于以下两条规则:
1)第一个取样器的点击率(hit rate)是否接近其他取样器的平均值,从而能否避免ramp-up period 过小。
2)在最后一个线程启动时,第一个线程是否在真正结束了,最好二者的时间要尽可能的长,以避免ramp-up period过大。
有时,这两条规则的结论会互相冲突。 这就意味着无法找到同时满足两条规则的合适的ramp-up period。 糟糕的测试计划通常会导致这些问题,这是因为在这样的测试计划里,取样器将不能充分地采集数据,可能因为测试计划执行时间太短并且线程会很快的运行结束。