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