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前面 或 子节点中
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律