前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Jmeter系列(7)- 基础线程组Thread Group

Jmeter系列(7)- 基础线程组Thread Group

作者头像
小菠萝测试笔记
发布2020-06-09 16:06:58
1.3K0
发布2020-06-09 16:06:58
举报

如果你想从头学习Jmeter,可以看看这个系列的文章哦

htTPS://www.cnblogs.com/poloyy/category/1746599.html

Thread Group基础线程组介绍

Thread Group的简单理解

  • 线程组是一个测试计划的开始点
  • 在一个测试计划中的所有元件都必须在某个线程组下
  • 线程组决定Jmeter执行测试计划的线程数

Thread Group提供的主要作用

  • 设置线程数
  • 设置ramp-up period
  • 设置执行测试的次数

Thread Group的独立性

每个线程都会独立的运行测试计划,互不干扰,多个线程用于模仿对服务器的并发访问。

Thread Group线程属性讲解

在取样器错误后要执行的动作

默认:继续

建议:继续

假设一个HTTP Sampler报错了,后面还有其他请求,最好肯定是继续执行下去啦

线程属性值

设置的线程属性值是【预期压力值】

而聚合报告是【压力测试的实际结果】

线程数

  • Jmeter java进程下启动的线程,用来模拟真实用户数,1线程数 = 1用户数
  • windows下,java进程最多能启动1000个线程
  • Linux下,java进程最多能启动2000个线程
  • 在Jmeter中,先启动线程,再运行线程,后释放线程【启动线程并运行,释放线程】

Ramp-Up时间(秒)

  • 预期线程组的所有线程启动-运行-释放的总时间
  • ramp up=0时,表示瞬时加压,启动线程的时间无限趋近于0
  • 特别注意:在负载测试的时候,尽量把ramp up设置大一些,让性能曲线平缓,分析瓶颈点

循环次数r

  • 每个线程循环执行的次数,默认一次【便于理解:线程的迭代次数、重复发起请求的次数】
  • 如果设置为永远,那么jmeter将以最大的可能去发送请求,以此测试出最大并发数

线程属性值的简单栗子

上图:2s内启动100个线程,并发送200个请求(100*2)

备注:如果2s内,100个线程不能启动运行完的话,时间则会顺延下去

Ramp-up 设置注意事项

Ramp-up需要设置足够长的时间来避免在测试刚开始时工作量过大
  • 假如需要大量线程的话,不建议设置成0,0 属于瞬时加压【过小的ramp-up period】
  • 如果设置 0,Jmeter将在测试开始时就启动全部线程并立即发送请求,这样很容易让服务器达到饱满状态,并且会增加负载,容易让服务器超载,这样是不合理的;
  • 不合理的原因并不是因为平均压力值过高,而是因为所有线程都在初始状态时一起并发访问,从而引起不正常的初始访问峰值,可以通过Jmeter的聚合报告看到这种情况
Ramp-up还必须足够短,保证最后一个线程在第一个线程完成之前开始运行
  • 如果Ramp-up过长,则会降低访问峰值的负载,即没有达到预期的压力峰值,无法获取准确的服务器最大负载情况【过大的ramp-up period】
  • 具体的表现为:一些线程还没有启动,初期启动的部分线程已经结束了【导致实际并发量并会小于预期并发量】
如何确定一个合理的ramp-up period
  • 首先,让初始点击率接近平均点击率,前提是确定合理的访问量
  • 初始的ramp-up period = 平均点击率= 总线程/点击率;假如线程数=100,点击率=10次/s,则ramp-up period = 100/10 = 10s

调度器Specify Thread Lifetime【scheduler

调度器的作用:控制每个线程组运行的持续时间以及它在多少秒后再启动

Duration (seconds) :持续时间;线程组运行的持续时间

Startup Delay (seconds):启动延迟;测试计划开始后,线程组的线程将在多少秒后再启动运行

调度器和循环次数的关系

  • 循环次数有固定值,持续时间不会生效,以循环次数为准
  • 循环次数设置为永远,持续时间才会生效

调度器注意事项

当线程组运行完持续时间后,会逐步释放线程,不会一下子把所有线程释放掉,而释放线程也是需要时间的~

所以测试计划总的时间(右上角的时间)会 > 持续时间+启动延迟

预习TPS
  • 总的完成请求数 = 线程总数 * 循环次数
  • 平均TPS = 总请求数 / 线程运行总时间【上图,右上角黄色三角形的时间】
  • 平均TPS(即聚合报告的TPS)是仅供参考的
  • 实际的TPS是由响应时间决定的,需要通过响应时间结果图和TPS结果图来最后得出

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-04-27 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Thread Group基础线程组介绍
    • Thread Group的简单理解
      • Thread Group提供的主要作用
        • Thread Group的独立性
        • Thread Group线程属性讲解
          • 在取样器错误后要执行的动作
            • 线程属性值
              • 线程数
                • Ramp-Up时间(秒)
                  • 循环次数r
                    • 线程属性值的简单栗子
                      • Ramp-up 设置注意事项
                        • 调度器Specify Thread Lifetime【scheduler】
                          • 调度器和循环次数的关系
                            • 调度器注意事项
                              • 预习TPS
                              领券
                              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档