JMeter 定时器:固定、高斯随机、均匀 [示例]
什么是定时器?
默认情况下,JMeter 发送请求时**不会在每个请求之间暂停**。在这种情况下,JMeter 可能会在短时间内发出太多请求,从而**使您的测试服务器不堪重负**。
假设您在几秒钟内向被测试的 Web 服务器发送了**数千个**请求。这就是会发生的情况!
定时器允许 JMeter 在线程发出的每个请求之间**延迟**。定时器可以解决服务器**过载**问题。
此外,**在现实生活中,访问者不会同时访问网站,而是以不同的时间间隔访问。因此,定时器将有助于模拟实时行为。**
以下是 JMeter 中一些**常见的**定时器类型
常数定时器
常数定时器将每个用户请求延迟**相同**的时间。
高斯随机定时器
高斯随机定时器将每个用户请求延迟**随机**的时间。
参数
属性 | 描述 |
---|---|
名称 | 此定时器在树中显示的描述性名称 |
偏差(毫秒) | 高斯分布函数的一个**参数** |
常数延迟偏移(毫秒) | **额外**的毫秒值 |
因此,总延迟如下图所示
均匀随机定时器
均匀随机定时器将每个用户请求延迟随机的时间。
参数
属性 | 描述 |
---|---|
名称 | 此定时器在树中显示的描述性名称 |
最大随机延迟 | 最大随机延迟毫秒数。 |
常数延迟偏移(毫秒) | **额外**的毫秒值 |
总延迟是随机值和偏移值之和。
BeanShell 定时器
BeanShell 定时器可用于**生成**每个用户请求之间的延迟时间。
BSF 定时器
BSF 定时器可用于使用 BSF 脚本语言生成每个用户请求之间的延迟。
JSR223 定时器
JSR223 定时器可用于使用 JSR223 脚本语言生成每个用户请求之间的延迟
如何使用常数定时器
在此示例中,您将使用**常数定时器**为用户对 google.com 的请求设置**固定延迟**。
让我们从一个简单的测试脚本开始
- JMeter 对 http://www.google.com 发送**100**次**一个**用户请求
- 每个用户请求之间的**延迟**为**5000**毫秒
这是本实践示例的**路线图**
前置条件
我们**重用**教程 JMeter 性能测试中的步骤 1 和步骤 2。
步骤 1) 添加线程组
右键单击测试计划并添加一个新的线程组:**添加**-> **线程(用户)** ->**线程组**
在线程组控制面板中,按如下所示输入线程属性
此设置使 JMeter 对 http://www.google.com 发送**100**次**一个**用户请求
步骤 2) 添加 JMeter 元素
- 添加 HTTP 请求默认值
- 添加 HTTP 请求
步骤 3) 添加常数定时器
右键单击**线程组** -> 定时器 -> 常数定时器
配置线程延迟为 5000 毫秒
步骤 4) 添加“在表格中查看结果”
“在表格中查看结果”以表格形式显示测试结果。
右键单击**添加** -> 监听器 ->在表格中查看结果
“在表格中查看结果”如下图所示
步骤 5) 运行测试
准备好运行测试时,单击菜单栏上的**运行**按钮,或快捷键 **Ctrl+R**
这是此测试的结果
例如,在上图中,让我们分析**样本 2**
- **开始时间**是 22:05:01.866
- 样本 2 的**样本时间**是 172 毫秒
- **常数定时器**:5000 毫秒(已配置)
- 此样本的**结束时间**是 = 22:05:01.866 + 172 + 5000 = 22:05:07.038
所以样本 3 应该在**22:05:07.039**时间开始(如上图所示)
每个样本的**延迟**是**5000**毫秒
如果将常数定时器更改为**零**,您将看到结果发生变化
让我们分析**样本 1**
- **开始时间**是 22:17:39.141
- 样本 2 的**样本时间**是 370 毫秒
- **常数定时器**:0 毫秒(已配置)
- 此样本的**结束时间**是 = 22:17:39.141+ 370 + 0 = 22:17:39.511
所以**样本 2**应该在**22:17:39.512**时间开始(如上图所示)
故障排除
如果您在运行上述场景时遇到问题,请执行以下操作
- 检查您是否通过代理连接到互联网。如果是,请移除代理。
- 打开 JMeter 的新实例
- 在 Jmeter 中打开 TimerTestPlan.jmx
- 双击线程组 -> 在表格中查看结果
- 运行测试