Jmeter (七)脚本增强_集合点

Jmeter也有像LR中的集合点,是通过“定时器(Synchronizing Timer)”来完成;

一、集合点:简单来理解一下,虽然我们的“性能测试”理解为“多用户并发测试”,但真正的并发是不存在的,为了更真实实现并发的概念,我们可以在需要压力的地方设置集合点。集合点是用来实现严的并发,一般来说不需要;

  PS:一般来说,我们所谓的并发是指在线用户,不需要通过集合点来实现,顶多需要加思考时间即可。通过在稳定性能测试中,建议通过随机思考时间的方式实现在线和并发的比例。

  操作步骤:

    1、右键“定时器--Synchronizing Timer”;

    

 

    设置集合点参数

    

    Number of Simulated Users to Group by:集合多少人后在执行请求(也就是执行的线程数),如果设置为0,等同于设置为线程组中的线程数量。

      注意:等同于设置为线程组中的线程数,一定要确保设置的值不大于它所在的线程组包含的用户数。

    Timeout in milliseconds:指定人数 多少秒没集合到算超时(设置延迟时间以毫秒为单位)。

      注意:如果Timeout in milliseconds为0,表示无超时时间,会一直等下去,除非手动终止!

    

  作用域:

    1、Synchronizing Timer是在每个sampler之前执行的,而不是之后,不管这个定时器的位置放在sampler之后,还是之前。

      当执行一个sampler之前时,和sampler处于相同作用域的定时器都会被执行;

    2、如果希望定时器仅应用于其中一个sampler,则可以把该定时器作为子节点加入。

 

  补充:   Synchronizing timer 仅作用于同一个JVM中的线程。

 

  试想:

 

     a.如果分布式测试时,synchronizing timer作用于所有jvm,那么jvm之间或者说监控jvm工作的部件就需要频繁通讯,确定线程的数量及状态等,然后集结了足够的线程后,又要发送信号让Jmeter来发送测试请求,中间存在延时,这样就无法

  模拟更真实的高并发了,而且这个东西还会消耗测试机器的一部分性能,会给测试结果带来负面影响;所以暂时是只支持控制单个jvm,如果后面有办法解决上面那些问题后,就可以实现控制多个jvm,控制总并发量;

 

     b.如果分布式测试,并使用了Synchronizing timer,且设置的值是小于单个jvm的线程数量;但是,较难确保所有jvm都在同一时间点集结了同样数量的线程数,这样就很难下测试结论了,因为都不知道是多少并发下的性能表现;当然了,可

  以将线程的启用时间拉长,并将超时时间延长,这样就很可能会与同一时刻集结到足够的线程,达到超高并发的测试;所以,分布式测试与Synchronizing timer一般不是同时使用的;如果非要用,则需要慎重设置相关参数

 

posted @ 2018-11-13 14:23  北卡蓝色的小方块  阅读(204)  评论(0编辑  收藏  举报