文章目录
- [一、同步定时器(Synchronizing Timer) [集合点]](#一、同步定时器(Synchronizing Timer) [集合点])
-
- [1.1 介绍](#1.1 介绍)
- [1.2 案例](#1.2 案例)
- [1.3 注意事项](#1.3 注意事项)
- [二、常数吞吐量定时器(Constant Throughput Timer)](#二、常数吞吐量定时器(Constant Throughput Timer))
-
- [2.1 案例](#2.1 案例)
- [2.2 思考题](#2.2 思考题)
- 三、固定定时器
- 四、总结
一、同步定时器(Synchronizing Timer) [集合点]
提示: 在Jmeter中叫做同步定时器, 在其他软件中又叫集合点。
yacas
思考?
1. 如何模拟多个用户同时抢一个红包?
2. 如何测试电商网站中的抢购活动、 秒杀活动?
1.1 介绍
SyncTimer的目的是阻塞线程, 直到阻塞了n个线程, 然后立即释放它们。
yacas
同步定时器相当于一个储蓄池, 累积一定的请求, 当在规定的时间内达到一定的线程数量, 这些线程会在同一个时间点一起并发, 所以可以用来做大数据量的并发请求。
实现原因:设置同步定时器,有请求要发出时,同步定时器会暂缓请求发送,一直到积攒的请求数达到要的数量时,将所有的请求同步发送出去,形成绝对的并发(更大的压力负载)
添加方式: 测试计划 --> 线程组--> HTTP请求 --> (右键添加) 定时器 --> Synchronizing Timer
1.2 案例
yacas
需求:模拟一个时间点上,30个用户同时访问百度首页(峰值访问)
场景:秒杀、微信抢红包、抢购...(服务器访问量 瞬时暴增)
1、添加线程组, 设置线程数=30
2、添加HTTP请求

3、在HTTP请求--->添加同步定时器
4、添加监听器-聚合报告

1.3 注意事项
问题: 当用户数不能整除集合点组件的一组用户数属性时, 如果超时时间是 0, 会导致程序挂起,怎么避免挂起?
实现:
- 方案1: 点击 stop 强行终止, 但是不建议
- 方案2: 修改一组用户数, 能够做到整除(治标不治本)
- 方案3: 修改超时时间, 不设置为 0, 即便一组用户数填充不满, 只要超时, 也会执行(建议)
二、常数吞吐量定时器(Constant Throughput Timer)
- 常数吞吐量定时器可以让JMeter以指定数字的吞吐量(以每分钟的样本数为单位, 而不是每秒) 执行。吞吐量计算的范围可以为指定为当前线程、 当前线程组、 所有线程组。
- 注意:常数吞吐量定时器只是帮忙达到性能测试的负载(压力)要求,本身不代表性能有bug/无bug。对于bug的分析需要通过响应时间来判断。
- 添加方式: 测试计划 --> 线程组--> HTTP请求 --> (右键添加) 定时器 --> Constant Throughput Timer
2.1 案例
bash
1、场景:一个用户以 20QPS (20 次/s) 的频率访问百度首页, 持续一段时间, 统计运行情况 。
# 没有特殊说明时,一般 QPS==TPS
2、作用:控制每秒 向服务器发送HTTP请求的数量。
3、目的:测试系统服务器 每秒是否能达到指定的QPS。
1、添加线程组, 循环次数设置成 "永远"。
2、添加HTTP请求--->添加常数吞吐定时器
3、添加监听器-聚合报告

2.2 思考题
思考题:测试百度服务器是否能达到80QPS
- 测试结论:百度服务器 无法达到80QPS
- 结论:目前业界内,优秀的服务器 (单用户测试),QPS大约在40-60之间。
三、固定定时器
- 在jmeter中,实现一个功能可以有多种方法
- 固定定时器,与线程组属性中 启动延时功能比较,固定定时器的时间单位更精准(单位:毫秒),固定定时器可以针对某一个请求定时。
- 添加方式: 测试计划 --> 线程组--> HTTP请求 --> (右键添加) 定时器 --> 固定定时器

四、总结
- 所有的定时器都是针对某一个请求的。
- 是在请求上定时的。