定时器

作者: test小星星 | 来源:发表于2019-06-18 22:16 被阅读0次

    定时器一般被我们用来设置延迟与同步,定时器的执行优先级高于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秒之间。

    Uniform Random Timer

    Poisson Random Timer

    功能说明:泊松随机定时器在每个线程请求之前按随机的时间停顿,大部分的时间间隔出现在一个特定的值,总的延迟就是泊松分布值和偏移值之和。

    名称:元件名称,可以随意设置,甚至可以为空。

    注释:可以随意设置,可以为空。

    Lambda(in milliseconds):偏移时间。

    Constant Delay Offset(in milliseconds):固定延迟时间。

    Poisson Random Timer

    BeanShell Timer

    功能说明:Jmeter支持BeanShell脚本语言,BeanShel Timer就用BeanShell来设置线程延迟间隔。

    参数说明

    名称:元件名称,可以随意设置,甚至可以为空。

    注释:可以随意设置,可以为空。

    Reset Interpreter:是否每次迭代重置解析器,默认False。官方建议是在长时间允许的脚本中设置True。

    Parameters:BeanShell的入参,入参可以是单个变量也可以是是数组。如${sleepTime}。

    File Name:BeanShell脚本可以是从脚本文件中读取的。

    Script:可以在该区域之间写Beanshell脚本,在脚本中可以调用JMeter的运行属性。

    BeanShell Timer

    JSR223 Timer

    JSR223作为一个标准,为脚本引擎提供了统一的结果、统一的访问模式。

    参考官方网站:http://commons.apache.org/proper/commons-bsf/index.html

    相关文章

      网友评论

          本文标题:定时器

          本文链接:https://www.haomeiwen.com/subject/uryppftx.html