定时器一般被我们用来设置延迟与同步,定时器的执行优先级高于Sampler(取样器),在同一作用域(比如控制器下)下有多个定时器存在时,
每个定时器都会执行;如果想让某一定时器仅对某一Sampler(取样器)有效,则可以把定时器加在此取样器节点下。
一个简单的例子
如图,我们设置2个线程组,都运行2次,所有的固定定时3秒,高斯定时器2秒左右(偏差200毫秒)。
此时java请求1需要等待的时间是:高斯定时器1 时间+固定定时器1时间+高斯定时器2时间,=7秒左右。
而java请求2需要等待的时间是,固定定时器2的时间=3秒。
所有java请求2率先运行完成。
Gaussian Random Timer(高斯定时器)
功能说明:高斯定时器,生成一个呈高斯分布的时间间隔。
参数说明
名称:元件名称,可以随意设置,甚至可以为空。
注释:可以随意设置,可以为空。
偏差:设置的偏差值,是一个浮动范围,单位毫秒。
固定延迟偏移:固定延迟时间,我们可以用它来模拟思考时间,(用户提交表单前填写表单及思考的时间)。
如:固定延迟300ms,偏差100ms,意思是时间延迟300-400ms之间。
Constant Timer(固定定时器)
功能说明:顾名思义就是一个固定值的定时器。
Synchronizing(同步定时器)
功能描述:在性能测试中需要模拟多用户并发的场景,Jmeter提供同步器来实现此需求。
参数说明
名称:元件名称,可以随意设置,甚至可以为空。
注释:可以随意设置,可以为空。
number of simulated users to group by(设置同步的线程数量):每集合够多少个模拟用户(线程)后发送一次测试请求,如果设置为0,等同于设置为线程组中的线程数;确保设置的值不大于它所在线程组的用户数(线程数)。
例子说明:“Number of Simulated Users to Group by: 5”表示并发量是5。也就是说,Jmeter会等到5个线程都运行到此处时,这五个线程才开始执行后面的操作,先到达的线程将会在此等候。
Timeout in milliseconds:
1.超时时间,即多少毫秒后同时释放已集结的的线程,发送测试请求;
2.如果设置为0,Timer将等待线程数达到了"Number of Simultaneous Users to Group"中设置的值才释放。
3.如果大于0,那么如果超过Timeout in milliseconds中设置的最大等待时间(毫秒为单位)后还没达到"Number of Simultaneous Users to Group"中设置的值,Timer将不再等待,释放已到达的线程。
一个简单的例子
如图,我们设置了10个线程,固定定时器时间3秒。同步定时器设置10个并发用户,此时在观察结果树中可以看到,在延迟3秒后,10个线程同时运行了。
Constant Throughput Timer(固定吞吐量定时器)
功能描述:Jmeter通过Constant Throughput Timer来控制吞吐量,如果吞吐量大过固定值,则增加迭代时间的间隔时间;反之减小。增大或者减小多少是由jmeter跟进吞吐量、并发线程数来计算的。
参数说明
名称:元件名称,可以随意设置,甚至可以为空。
注释:可以随意设置,可以为空。
Target throughput(in samples per minute):每分钟的吞吐量。
Calculate Throughput based on:有5个选项
This thread only:仅针对当前线程,也就是每个线程相互是不干扰的,选择这种模式时,总的吞吐量为设置的target Throughput 乘以该线程的数量。
All active threads:针对所有线程,把所有线程的吞吐量合在一起作为因子计算。
All avtive threads(shared):线程延迟计算是基于任意一个线程上次运行的时间,也就是随便获取一个线程的运行时间来计算,既然是随机,结果就不一定准确,所以只能是努力控制吞吐量在某一个范围。
All active threads in current thread group:针对当前线程组中的所有线程。
All active threads in current thread group(shared):在当前线程组中任意取一个线程的上次运行时间来计算延时。
Uniform Random Timer
功能说明:让线程暂停一个随机时间,只不过力求随机时间能够更均匀,都会出现。
参数说明
名称:元件名称,可以随意设置,甚至可以为空。
注释:可以随意设置,可以为空。
Random Delay Maximum:随机延迟时间。
Constant Delay Offset:固定延迟时间。如:随机延迟1000,固定延迟2000,最终延迟时间为2~3秒之间。
Poisson Random Timer
功能说明:泊松随机定时器在每个线程请求之前按随机的时间停顿,大部分的时间间隔出现在一个特定的值,总的延迟就是泊松分布值和偏移值之和。
名称:元件名称,可以随意设置,甚至可以为空。
注释:可以随意设置,可以为空。
Lambda(in milliseconds):偏移时间。
Constant Delay Offset(in milliseconds):固定延迟时间。
BeanShell Timer
功能说明:Jmeter支持BeanShell脚本语言,BeanShel Timer就用BeanShell来设置线程延迟间隔。
参数说明
名称:元件名称,可以随意设置,甚至可以为空。
注释:可以随意设置,可以为空。
Reset Interpreter:是否每次迭代重置解析器,默认False。官方建议是在长时间允许的脚本中设置True。
Parameters:BeanShell的入参,入参可以是单个变量也可以是是数组。如${sleepTime}。
File Name:BeanShell脚本可以是从脚本文件中读取的。
Script:可以在该区域之间写Beanshell脚本,在脚本中可以调用JMeter的运行属性。
JSR223 Timer
JSR223作为一个标准,为脚本引擎提供了统一的结果、统一的访问模式。
参考官方网站:http://commons.apache.org/proper/commons-bsf/index.html