timer-同步定时器(Synchronizing Timer)

模拟并发。

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

步骤:

1. 添加同步定时器

 Add --> Timer --> Synchronizing Timer

 2. 配置同步定时器

a)Number of Simulated Users to Group by:请求集合数量(模拟用户的数量,即指定同时释放的线程数数量)

 b)Timeout in milliseconds:超时时间(超时多少毫秒后同时释放指定的线程)

  当线程数=集合数量时,集合好了就全部释放,不用等超时时间

  当线程数<集合数量时,设置10000毫秒(即10s),意思是从点击start开始,等待10s后同时释放,释放数量n(线程数)个

  当线程数>集合数量时,集合好了就释放n(集合数量)个,然后再过10s释放m(线程数-集合数)个,也就是剩余的

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

解决方案是设置同步定时器的超时时间:

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

 下面以三个sampler为例:

场景一:设置定时器与不设置定时器区别

线程数设置为10,集合点为10,超时为1000,点击运行

 关闭定时器,发送前期都是零零散散的

 场景二:定时器位置是否影响结果

 定时器移动到sampler1,结果与3.1一样,如下图所示,所以,不管移动到什么位置,发现只要在该线程组下,都是作用于该线程组下所有请求线程

场景三:移动到子节点下面是什么情况呢,从下面的数据发现是作用于该父类节点的sampler

 定时器仅仅对sampler1起作用,即仅在sampler1执行前执行定时器,和sampler2及sampler3无关

注意点:集合点的位置一定要在Sample(采样器)之前才能生效吗???”

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

posted @   候鸟e人  阅读(1020)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示