jmeter系列 一篇文章带你学会jmeter线程组

目录

关于线程组

在 JMeter 中,线程组 (Thread Group) 是测试计划的核心组件,它定义了一组虚拟用户,用于模拟并发访问应用程序。
![[image-02 高级性能测试-20240416191501935.png]]

线程组的主要功能:

  • 模拟用户: 线程组中的每个线程代表一个虚拟用户,用于模拟真实用户对应用程序的操作。

  • 控制并发: 通过设置线程数、Ramp-Up 时间和循环次数,可以控制并发用户数量和测试持续时间。

  • 执行测试计划: 线程组包含一系列测试元件,例如取样器、逻辑控制器、监听器等,用于定义测试计划的执行逻辑和收集测试结果。

线程组配置参数:

Name:

  • 线程组的名称,用于标识和区分不同的线程组。

Comments:

  • 添加注释,用于描述线程组的用途或配置信息。

Action to be taken after a Sampler error:

  • 采样器出错后的操作,选项包括:
    • Continue: 继续执行线程
    • Start Next Thread Loop: 停止当前循环,开始下一个循环
    • Stop Thread: 停止当前线程
    • Stop Test: 停止整个测试
    • Stop Test Now: 立即停止整个测试

Thread Properties:

  • 线程属性配置,包括以下选项:
    • Number of Threads (users): 线程数,即虚拟用户数量。 此配置设置为 500,表示模拟 500 个并发用户。
    • Ramp-up period (seconds): 启动所有线程所需的时间 (秒)。 此配置设置为 1 秒,表示 JMeter 将在 1 秒内启动所有 500 个线程。
    • Loop Count: 每个线程执行测试计划的循环次数。 此配置设置为 “Infinite”,表示线程会一直循环执行,直到手动停止测试。 也可以设置为具体的循环次数,例如 10。
    • Same user on each iteration: 如果勾选此选项,则每个线程在每次循环中使用相同的用户名和密码等用户信息。
    • Delay Thread creation until needed: 如果勾选此选项,则线程会在需要时才创建,而不是在测试开始时一次性创建。
    • Specify Thread lifetime: 如果勾选此选项,则可以设置线程的生命周期,包括持续时间和启动延迟。
    • Duration (seconds): 线程组的持续时间 (秒)。 此配置设置为 20 秒,表示线程组将在 20 秒后停止运行。
    • Startup delay (seconds): 线程组启动的延迟时间 (秒)。 此配置留空,表示线程组将立即启动。

问题: 如果 Number of Threads (users) 设置为 100,Ramp-Up Period (in seconds)设置为10,jmeter是每秒启动10个线程吗还是每秒启动的线程数不一样,比如前面启动的线程少后面启动的线程多?

JMeter Ramp-Up 线程启动机制

当 JMeter 线程组的 Number of Threads (users) 设置为 100,Ramp-Up Period (in seconds) 设置为 10 时,JMeter 会尽量均匀地在 10 秒内启动 100 个线程

线程启动逻辑:

  • 均匀分布: JMeter 会将 Ramp-Up Period 平均分成线程数份,每个时间间隔启动相同数量的线程。 在这个例子中,JMeter 会每秒启动 10 个线程 (100 个线程 / 10 秒)。
  • 非绝对精确: 由于线程启动需要时间,并且可能受到系统资源和网络状况的影响,实际的线程启动时间可能会有微小的差异。
  • 启动延迟: 线程启动之间可能存在微小的延迟,尤其是在启动大量线程时。

例如:
在 10 秒的 Ramp-Up Period 内,JMeter 可能会按照以下方式启动线程:

  • 第 1 秒:启动 10 个线程
  • 第 2 秒:启动 10 个线程
  • 第 10 秒:启动 10 个线程

实际情况:
实际的线程启动时间可能会有微小的差异,例如:

  • 第 1 秒:启动 9 个线程
  • 第 2 秒:启动 11 个线程
  • 第 10 秒:启动 10 个线程

重要提示:

  • Ramp-Up Period 的作用: Ramp-Up Period 的目的是逐渐增加并发用户数量,避免一次性启动大量线程对服务器造成过大的压力,更真实地模拟实际用户访问情况。
  • 监控资源使用: 在测试过程中,监控服务器和客户端的资源使用情况,例如 CPU、内存、网络等,确保测试环境稳定,并根据需要调整线程数和 Ramp-Up Period。

总结:
JMeter 会尽量均匀地在 Ramp-Up Period 内启动线程,但实际启动时间可能存在微小的差异。

关于Ramp-UpPeriod的几点说明

  • 启动时间,准备时长
    • 从开始运行,到压力全部压上所需的时间
    • 模拟现实中的情形,并发启动不可能绝对同时
      在这里插入图片描述

每条彩色线条代表一个线程的生命周期,线条的长度表示线程的持续时间。 线段的起始和结束位置对应线程的开始和结束时间。不同颜色的线条重叠表示多个线程在同一时间段内并发执行。

Setup 与 tearDown 线程组

  • 与普通线程组区别

    • Setup线程组:在普通线程组执行前触发
    • tearDown线程组:在普通线程组执行后触发
  • 线程组属性配置详情完全一致

  • 使用策略建议

    • Setup 线程组-压测执行准备阶段,准备测试数据,设定参数
    • tearDown 线程组-压测执行结束之后清理数据,环境归零
  • Setup与tearDown线程组实战场景

    • Setup线程组:创建测试数据
    • tearDown线程组:删除测试数据
    • 普通线程组执行查询测试压测任务

实战

  • 添加 Setup 线程组:Test Plan > Add > Threads(Users)> setUp Thread Group
  • 把聚合报告 Aggregate Report、察看结果树 View Results Tree 和 JDBC Connection Configuration 移到 所有线程组的前面
  • 把 Insert Data 请求移动到 Setup 线程组的里面
  • 添加 tearDown 线程组:Test Plan > Add > Threads(Users)> tearDown Thread Group
  • 把 Delete user 请求移动到 tearDown Group 线程组里面
  • 执行脚本
    在这里插入图片描述

问题: 如果一个压测脚本中有多个setup 和 tearDown 线程执行顺序是什么?

在 JMeter 压测脚本中,可以添加多个 setUp Thread Group 和 tearDown Thread Group,用于执行初始化和清理操作。

执行顺序:

  1. setUp Thread Group: JMeter 会按照添加顺序依次执行所有的 setUp Thread Group。
  2. 普通线程组: 执行完所有的 setUp Thread Group 后,JMeter 会开始执行普通的线程组,模拟并发用户进行测试。
  3. tearDown Thread Group: 测试结束后,JMeter 会按照添加顺序的相反顺序依次执行所有的 tearDown Thread Group。

示例:

假设测试计划中包含以下线程组:

  • setUp Thread Group 1
  • setUp Thread Group 2
  • 普通线程组
  • tearDown Thread Group 1
  • tearDown Thread Group 2

执行顺序为:

  1. setUp Thread Group 1
  2. setUp Thread Group 2
  3. 普通线程组
  4. tearDown Thread Group 2
  5. tearDown Thread Group 1

注意事项:

  • 线程组之间的依赖: 如果 setUp Thread Group 之间存在依赖关系,例如需要按照特定顺序执行,可以将其添加到一个 “Setup Thread Group Controller” 中,并设置执行顺序。
  • 错误处理: 如果 setUp 或 tearDown Thread Group 中的某个线程出错,JMeter 会根据配置的 “Action to be taken after a Sampler error” 属性进行处理。
  • 资源清理: 确保 tearDown Thread Group 中的清理操作能够正确执行,例如删除测试数据,释放资源等,避免对后续测试造成影响。

总结:
JMeter 中的 setUp Thread Group 和 tearDown Thread Group 按照添加顺序依次执行,可以用于执行初始化和清理操作,确保测试环境的干净和一致性。

线程组使用的几点建议

  • 根据测试目标设置线程数: 例如,模拟 100 个并发用户,则设置线程数为 100。
  • 逐渐增加线程数: 避免一次性启动大量线程,以免对应用程序造成过大的压力。 可以使用 Ramp-Up Period 逐渐增加线程数。
  • 使用不同的线程组: 例如,可以使用一个线程组模拟登录操作,另一个线程组模拟其他业务操作。
  • 监控资源使用情况: 在测试过程中,监控服务器和客户端的资源使用情况,例如 CPU、内存、网络等,确保测试环境稳定。
  • 20
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值