JMeter 定时器:固定、高斯随机、均匀 [示例]

什么是定时器?

默认情况下,JMeter 发送请求时**不会在每个请求之间暂停**。在这种情况下,JMeter 可能会在短时间内发出太多请求,从而**使您的测试服务器不堪重负**。

假设您在几秒钟内向被测试的 Web 服务器发送了**数千个**请求。这就是会发生的情况!

Timers in JMeter

定时器允许 JMeter 在线程发出的每个请求之间**延迟**。定时器可以解决服务器**过载**问题。

此外,**在现实生活中,访问者不会同时访问网站,而是以不同的时间间隔访问。因此,定时器将有助于模拟实时行为。**

以下是 JMeter 中一些**常见的**定时器类型

常数定时器

常数定时器将每个用户请求延迟**相同**的时间。

Constant Timer in Jmeter

高斯随机定时器

高斯随机定时器将每个用户请求延迟**随机**的时间。

Gaussian Random Timer in Jmeter

参数

属性 描述
名称 此定时器在树中显示的描述性名称
偏差(毫秒) 高斯分布函数的一个**参数**
常数延迟偏移(毫秒) **额外**的毫秒值

因此,总延迟如下图所示

Gaussian Random Timer in Jmeter

均匀随机定时器

均匀随机定时器将每个用户请求延迟随机的时间。

Uniform Random Timer in Jmeter

参数

属性 描述
名称 此定时器在树中显示的描述性名称
最大随机延迟 最大随机延迟毫秒数。
常数延迟偏移(毫秒) **额外**的毫秒值

总延迟是随机值和偏移值之和。

BeanShell 定时器

BeanShell 定时器可用于**生成**每个用户请求之间的延迟时间。

BSF 定时器

BSF 定时器可用于使用 BSF 脚本语言生成每个用户请求之间的延迟。

JSR223 定时器

JSR223 定时器可用于使用 JSR223 脚本语言生成每个用户请求之间的延迟

如何使用常数定时器

在此示例中,您将使用**常数定时器**为用户对 google.com 的请求设置**固定延迟**。

让我们从一个简单的测试脚本开始

  1. JMeter 对 http://www.google.com 发送**100**次**一个**用户请求
  2. 每个用户请求之间的**延迟**为**5000**毫秒

这是本实践示例的**路线图**

Use Constant Timer in Jmeter

前置条件

我们**重用**教程 JMeter 性能测试中的步骤 1 和步骤 2。

步骤 1) 添加线程组

右键单击测试计划并添加一个新的线程组:**添加**-> **线程(用户)** ->**线程组**

在线程组控制面板中,按如下所示输入线程属性

Add Thread Group

此设置使 JMeter 对 http://www.google.com 发送**100**次**一个**用户请求

步骤 2) 添加 JMeter 元素

  • 添加 HTTP 请求默认值
  • 添加 HTTP 请求

步骤 3) 添加常数定时器

右键单击**线程组** -> 定时器 -> 常数定时器

Add Constant Timer

配置线程延迟为 5000 毫秒

Add Constant Timer

步骤 4) 添加“在表格中查看结果”

“在表格中查看结果”以表格形式显示测试结果。

右键单击**添加** -> 监听器 ->在表格中查看结果

Add View Results in Table

“在表格中查看结果”如下图所示

Add View Results in Table

步骤 5) 运行测试

准备好运行测试时,单击菜单栏上的**运行**按钮,或快捷键 **Ctrl+R**

这是此测试的结果

Run The Test

例如,在上图中,让我们分析**样本 2**

  • **开始时间**是 22:05:01.866
  • 样本 2 的**样本时间**是 172 毫秒
  • **常数定时器**:5000 毫秒(已配置)
  • 此样本的**结束时间**是 = 22:05:01.866 + 172 + 5000 = 22:05:07.038

所以样本 3 应该在**22:05:07.039**时间开始(如上图所示)

每个样本的**延迟**是**5000**毫秒

如果将常数定时器更改为**零**,您将看到结果发生变化

Run The Test

让我们分析**样本 1**

  • **开始时间**是 22:17:39.141
  • 样本 2 的**样本时间**是 370 毫秒
  • **常数定时器**:0 毫秒(已配置)
  • 此样本的**结束时间**是 = 22:17:39.141+ 370 + 0 = 22:17:39.511

所以**样本 2**应该在**22:17:39.512**时间开始(如上图所示)

故障排除

如果您在运行上述场景时遇到问题,请执行以下操作

  1. 检查您是否通过代理连接到互联网。如果是,请移除代理。
  2. 打开 JMeter 的新实例
  3. 在 Jmeter 中打开 TimerTestPlan.jmx
  4. 双击线程组 -> 在表格中查看结果
  5. 运行测试