(四)JMeter 定时器

前言

在默认情况下,jmeter 发送每个请求之间是没有延时的,如果采用默认方式,如果线程数足够大,瞬间就会将服务器压死。再则在实际的业务过程中,请求之间是有一定时间的停顿的所以在请求之间设置合理的延时是必须的,也是更接近用户真实业务情况。在 jmeter 中,定时器组件提供了系列不同类型的延时控制。合理使用定时器组件,能让你的性能测试更接近真实,更能挖掘出系统的瓶颈和评估系统的性能指标。

定时器类型

1、固定定时器

这是最简单的一种定时器,也是新手最常用的一种方式。下面我们看下其具体设置:

因其是固定值,在实际模拟用户请求的过程中,会失去灵活性,不推荐大量使用该定时器。

2、高斯随机定时器

高斯随机定时器,又可以称作正态分布随机定时器,该定时器可以设置在两个请求间随机延时时长。且总的延时是高斯分布(正态分布)的总和(均值:0.0、标准差 1.0)。在使用时须指定偏差延时值和偏移值。。下面我们看下其具体设置:

例如在访问百度首页,然后输入关键词进行搜索,受网络、人等各种因素影响,有的人打开首页后 3s 后则进行了搜索,有时则是 10s或更多时间,在正常情况下,打开百度然后进行搜索,假设用户间隔在 3s-10s 之间,从统计学来看,这个间隔时间可能是一个正态分布或接近正态分布。而不是一个固定的常量。从笔者在日常实践中,也更推荐使用该定时器。能更接近模拟用户实际情况。

3、Synchronizing Timer

这个定时器应该是大家很期望的,它有在 LoadRunner 中有一个大家熟悉的名称:集合点。是的,它实现了某种意义上的并发。

请注意 Timeout in milliseconds 尽量填写一个合理的值。

4、Uniform Random Timer

该定时器可以在请求之间设置一个随机延时,每个随机延时有相同的发生概率。总的延时等于随机延时 + 偏移延时值。该定时器也是常用之一。

  5、Poisson Random Timer

类似高斯随机定时器,只是其随机延时值发生在一个特定的值。总的延时值呈现泊松分布。

 6、Constant Throughput Timer

通过控制每分钟请求数(即控制吞吐的方式)来控制是否进行延时暂停。
例如,当我们需要使服务端长期处于一定的压力下时,可以通过该定时器来控制吞吐。
注意:吞吐值可以是常量,也可以使用函数来动态生成,已达成更灵活的使用,满足不同的压力场景。

 7、JSr R223 Timer   和  BeanShell Timer

这两种定时器就不细说了,简单的说就是提供了脚本方式来进行控制,是更为灵活的方式。一般情况下,大家是不会用的。当然有兴趣的,可以去研究下,增强理解。

总结
本文就各种定时器进行了介绍,并大致介绍了其可能的应用场景。不管是哪种定时器,都需要深入理解业务的情况下,统筹规划使用。以更深入的发挥其作用,模拟好真实应用场景,更好的挖掘性能瓶颈和评估目标服务的性能情况。

### 使用和配置 JMeter 定时器JMeter 中,定时器用于控制请求之间的延迟时间,从而模拟更真实的用户行为并减少服务器负载压力。以下是关于如何使用和配置不同类型的定时器的详细介绍。 #### 基本操作流程 要向测试计划中添加定时器,需完成以下步骤: 1. 右键单击目标线程组。 2. 依次选择 `Add` -> `Timer`。 3. 在弹出的选项列表中选择所需的定时器类型。 --- #### 不同类型的定时器及其配置方法 ##### 1. **固定定时器 (Constant Timer)** 此定时器会在每次采样前引入固定的延迟时间。 - 配置项:`Thread Delay`(毫秒)。表示每个线程在发送下一个请求之前等待的时间长度。 - 示例配置:如果希望每个请求之间有 5 秒的间隔,则将 `Thread Delay` 设置为 `5000`[^3]。 ```properties Thread Delay: 5000 ``` --- ##### 2. **高斯随机定时器 (Gaussian Random Timer)** 此定时器允许设置一个平均延迟时间和偏差范围,使延迟呈现正态分布特性。 - 配置项: - `Deviation`: 延迟的标准差(以毫秒为单位)。 - `Offset`: 平均延迟时间(以毫秒为单位)。最终的实际延迟时间为 `Offset ± Deviation` 的范围内随机取值。 ```properties Offset: 5000 # 平均延时 5 秒 Deviation: 1000 # 标准差 1 秒 ``` --- ##### 3. **统一随机定时器 (Uniform Random Timer)** 此定时器会在指定范围内随机生成延迟时间。 - 配置项: - `Random Delay Maximum`: 最大随机延迟时间(毫秒)。 - `Constant Delay Offset`: 固定偏移量(毫秒),即最小延迟时间。总延迟等于两者之和。 ```properties Random Delay Maximum: 2000 # 最大随机延迟 2 秒 Constant Delay Offset: 3000 # 固定偏移量 3 秒 Total Delay Range: [3000, 5000] ``` --- ##### 4. **同步定时器 (Synchronizing Timer)** 此定时器主要用于实现多个线程的同时触发,类似于“屏障”的作用。它可以让一定数量的线程聚集在一起后再一起继续运行。 - 关键参数: - `Number of Simulated Users to Group by`: 表示需要聚集的线程数。只有当达到这个数值时才会释放这些线程。 - `Timeout in milliseconds`: 超时时间(毫秒)。如果在此时间内未达到设定的线程数,则强制释放当前已到达的线程。默认值为 `0`,意味着无限期等待直到满足线程数要求[^2]。 > 注意事项:在线程组中应避免使用循环结构来配合同步定时器,因为这可能导致不稳定的行为。 ```properties Number of Simulated Users to Group by: 100 # 聚集 100 个线程 Timeout in milliseconds: 10000 # 超时时间设为 10 秒 ``` --- ##### 5. **常数吞吐量定时器 (Constant Throughput Timer)** 通过调整每分钟处理的样本数来控制整体吞吐率。适用于需要精确控制事务速率的情况。 - 主要参数: - `Target Throughput`: 每分钟的目标吞吐量(样本/分钟)。可以通过计算得出相应的延迟时间。 - `Calculate Throughput based on all active threads**: 是否基于所有活动线程计算吞吐量。启用后可更好地适应多线程场景下的需求。 ```properties Target Throughput: 60 # 每分钟 60 个样本 Calculate Throughput based on all active threads: true ``` --- ##### 其他常用定时器简介 除了上述几种外,还有其他一些特殊用途的定时器可供选用,例如 BeanShell 定时器、BSF 定时器等,它们允许通过脚本来动态定义延迟逻辑。具体可根据项目需求灵活选取。 --- ### 性能调优建议 为了获得最佳效果,请遵循以下原则: - 对于简单的延迟需求,优先考虑使用固定定时器或均匀随机定时器。 - 当涉及复杂的业务场景或者需要严格控制并发度时,推荐采用同步定时器与常数吞吐量定时器组合的方式。 - 测试过程中密切关注 CPU 和内存消耗情况,必要时适当降低线程数或增加延迟时间以减轻系统负担。 ---
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值