Jmeter之集合点

集合点:

  虽然我们对性能测试理解为多用户并发测试,但真正做到完全的并发是不存在的,为了更真实的实现并发这概念,我们可以在需要压力的地方设置集合点,等到所有用户都准备好时,一起发送请求。

  Jmeter中的集合点通过添加定时器中的Synchronizing Timer来完成

1、添加Synchronizing Timer

2、用法

Number of Simulated Users to Group by:集合多少用户(也就是多少线程数)。该值应该小于等于现出组中的线程数。

Timeout in milliseconds :集合超时时间,多长时间集合完成。该值如果设为0,就相当于没有超时时间,没到设定的用户数,会一直等下去。

3、Synchronizing Timer应用与单个请求

如果希望集合点只应用于其中一个请求,则应该把Synchronizing Timer作为子节点加入,如下图:

集合点仅仅对HTTP请求1起作用,仅在HTTP请求1执行前执行集合点,和HTTP请求2无关

4、Synchronizing Timer应用于多个请求

执行HTTP请求1和HTTP请求2前都会执行同步Synchronizing Timer 1和Synchronizing Timer 2。当执行HTTP请求1之前,和HTTP请求1处于相同作用域的Synchronizing Timer 2都会被执行

注意:

   在Jmeter中,Synchronizing Timer是在请求之前执行的。不管这个它的位置放在请求之后还是之前。当然,如果有多个Synchronizing Timer的时候,在相同作用域下,会按上下顺序执行Synchronizing Timer,这个就需要慎重放置Synchronizing Timer的顺序。不过,为了更好的可读性,还是建议将Synchronizing Timer放在对应的请求前面或子节点中。

5、查看运行结果

通过结果树可以看到,请求是批量执行的。观察开始执行的脚本,观察请求的增加数量趋势;或对比请求的发送时间。

6、Synchronizing timer 仅作用于同一个JVM中的线程

  分布式测试时,如果synchronizing timer作用于所有jvm,那么jvm之间或者说监控jvm工作的部件就需要频繁通讯,确定线程的数量及状态等,然后集结了足够的线程后,又要发送信号让Jmeter来发送测试请求,中间存在延时,这样就无法模拟更真实的高并发了,而且这个东西还会消耗测试机器的一部分性能,会给测试结果带来负面影响。所以暂时是只支持控制单个jvm,如果后面有办法解决上面那些问题后,就可以实现控制多个jvm,控制总并发量。

  分布式测试时,如果使用了Synchronizing timer,且设置的值是小于单个jvm的线程数量。但是,较难确保所有jvm都在同一时间点集结了同样数量的线程数,这样就很难下测试结论了,因为都不知道是多少并发下的性能表现;当然了,可以将线程的启用时间拉长,并将超时时间延长,这样就很可能会与同一时刻集结到足够的线程,达到超高并发的测试。所以,分布式测试与Synchronizing timer一般不是同时使用的,如果非要用,则需要慎重设置相关参数。

  在实际的性能测试中,我们都较少使用集合点这一操作,因为即使设置了集合点,所有用户同时发送请求,服务器接收到请求的时间也不可能完全相同。

 

posted on 2018-08-05 21:01  破解孤独  阅读(2362)  评论(0编辑  收藏  举报

导航