JMeter 定时器(Synchronizing Timer)之集合点应用

性能测试中我们经常提到一个概念就是“并发”,其实在实际真实的性能测试中是不存在真正的并发的。为了更真实的模拟对一个请求的并发测试场景,我们通常设置一个集合点,JMeter中提供了这样的一个功能设置。

那么集合点的大致概念是什么呢?

简单理解就是:设置一个阀值(请求数量),当请求数达到这个阀值时,允许请求同时发出。例如:想测试一座桥的并发(忽略载重等其他因素,只考虑通过),那么并发的请求就是类似于多少辆车可同时通过桥,而车辆一般情况下是不可能同时通过桥的,因而我们可以在桥头A,设置一个集合点,等车辆数满足一定的数量,同时让车辆通过此桥。

添加路径:右键单击线程组,依次选择【添加/定时器/Synchronizing Timer】即可添加集合点

添加后,显示如下图所示:

PS:超时时间为0时,默认无超时限制。

 

实际运行过程中,可能出现请求数当不满足集合点设置的请求数时,JMeter一直卡顿在如下页面:

 

解决办法是:设置同步定时器的超时时间。

同步定时器(Synchronizing Timer)的超时时间设置要求:

超时时间 > 请求集合数量 * 1000 / (线程数 / 线程加载时间)

 

计时器的超时时间定义:若在超时时间内,性能测试并发场景设定的并发样本数量未达到,则jmeter认为超时,会立即执行并发。这样就不符合你设定的性能测试场景。

超时时间的设定值约束:超时时间 > 请求集合数量 * 1000 / (线程数 / 线程加载时间)

分母计算结果为:每秒启动的线程数;
请求集合数量:为设定的性能测试场景的样本并发数量;
不等式右边计算结果为:加载性能并发样本所需时间(毫秒)

综上,同步定时器的超时时间建议设置为大于不等右边。

 

Q:线程数 是单指线程组的线程数 还是 线程数 * 循环次数? 比如线程组的线程数是 100 ,循环次数是10,这里分母中的线程数是100 还是100*10?

A:100

posted @ 2017-08-01 15:04  HkGov  阅读(213)  评论(0编辑  收藏  举报