程序员的大厨梦

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

一、插件安装 (Stepping Thread Group)

  1.安装 JMeter Plugins Manager (如果尚未安装)

    • 在 Test Plan (测试计划) 上右键点击。
    • 选择 Add > Threads (Users) > jp@gc - Stepping Thread Group。
    • 一个新的 "Stepping Thread Group" 配置元素会出现在你的测试计划中。

 

二、插件使用方法 (Stepping Thread Group)

  1.安装成功后,你就可以创建阶梯式的负载场景了

    • 添加 Stepping Thread Group
    • 在 Test Plan (测试计划) 上右键点击。
    • 选择 Add > Threads (Users) > jp@gc - Stepping Thread Group。
    • 一个新的 "Stepping Thread Group" 配置元素会出现在你的测试计划中。

 

  2.理解 Stepping Thread Group 界面

    • Stepping Thread Group 的配置界面主要包含以下几个关键参数:
    • This group will start [ ] threads: 整个线程组最终要达到的最大并发线程数。
    • First, wait for [ ] seconds: 测试计划启动后,等待多少秒再开始启动第一个线程(初始延迟)。
    • Then start [ ] threads: 初始要启动的线程数。
    • Next, add [ ] threads every [ ] seconds, using ramp-up [ ] seconds: 这是定义"阶梯"的核心部分。
      • add [ ] threads: 每次阶梯增加的线程数量。
      • every [ ] seconds: 每次增加线程的时间间隔 (即每个阶梯持续的时间)。
      • using ramp-up [ ] seconds: 在指定的时间间隔内,新增的线程是平滑启动的(而不是瞬间启动)。例如,如果你设置增加 10 个线程,使用 5 秒 ramp-up,那么这 10 个线程会在 5 秒内均匀启动。
      • Then hold load for [ ] seconds: 达到最大线程数后,保持该负载压力运行多少秒。
      • Finally, stop [ ] threads every [ ] seconds: (可选) 定义如何逐步停止线程(阶梯式下降)。通常测试执行完 Hold Load 阶段后线程会立即停止,如果需要模拟用户逐渐退出,可以配置这里。

 

三、配置一个典型的阶梯负载场景 (示例):

  1.假设你想模拟以下场景:

    • 测试开始后等待 10 秒。

    • 初始启动 10 个用户。

    • 之后,每分钟增加 20 个用户,新增的 20 个用户在 30 秒内平滑启动 (ramp-up)。

    • 一直增加到 100 个用户。

    • 达到 100 个用户后,保持压力运行 5 分钟。

    • 最后,所有用户立即停止(不配置阶梯下降)。

  参数配置如下:

    • This group will start: 100 (最终最大线程数)

    • First, wait for: 10 (秒)

    • Then start: 10 (初始线程数)

    • Next, add: 20 threads

    • every: 60 seconds (1分钟)

    • using ramp-up: 30 seconds

    • Then hold load for: 300 seconds (5分钟 = 300秒)

    • Finally, stop...: 留空或设为 0 (表示不进行阶梯停止,Hold结束后立即停止所有线程)

  这个配置的含义:

    • T=0s: 测试开始。

    • T=0s to T=10s: 等待。

    • T=10s to T=40s: 启动前 10 个用户 (在30秒内平滑启动?注意:这里的 "Then start 10 threads" 没有单独的 ramp-up 时间。它实际会在 T=10s 瞬间启动 10 个用户。如果需要平滑初始用户,需要把初始用户也看作一个阶梯,或者使用 using ramp-up 来控制初始启动。插件界面在这个初始启动的表述上有点歧义。通常认为初始线程是立即启动的。如果需要平滑初始启动,可以将 Then start 设为 0,然后在第一个阶梯增加初始用户数并设置 ramp-up)。

    • T=40s: 第一个阶梯结束,当前总用户数 = 10。

    • T=40s to T=70s: 启动 下一批 20 个用户 (在 30 秒内平滑启动)。

    • T=70s: 第二个阶梯结束,当前总用户数 = 10 + 20 = 30。

    • T=70s to T=100s: 启动 再下一批 20 个用户 (在 30 秒内平滑启动)。

    • T=100s: 第三个阶梯结束,当前总用户数 = 30 + 20 = 50。

    • T=100s to T=130s: 启动 再下一批 20 个用户 (在 30 秒内平滑启动)。

    • T=130s: 第四个阶梯结束,当前总用户数 = 50 + 20 = 70。

    • T=130s to T=160s: 启动 最后一批 20 个用户 (在 30 秒内平滑启动)。注意:70 + 20 = 90,但最大线程数是 100。插件会确保不超过最大线程数。

    • T=160s: 第五个阶梯结束,当前总用户数 = 90。

    • T=160s to T=190s: 启动 最后 10 个用户 (在 30 秒内平滑启动, 因为只剩 10 个需要达到最大 100)。

    • T=190s: 达到最大线程数 100。

    • T=190s to T=490s (190 + 300): 保持 100 个用户并发运行 300 秒 (5 分钟)。这是主要的稳定压力阶段。

    • T=490s: 测试结束,所有线程立即停止。

 

posted on 2025-06-05 15:20  程序员的大厨梦  阅读(749)  评论(0)    收藏  举报