概述

在jmeter中,只要提到并发,99%的同学立马想到线程组。需要多少并发就启动多少线程组,这已经成了大部分人的共识。这种理解方式很明显是把并发数和线程数的概念混淆了。线程组中不光有线程数,也有循环次数。然而大家在负载测试中都主动的忽略了循环的作用。jmeter中的循环和lr中的迭代是一样的,都是为了模拟出压力,不要选择性无视它

实验

先列出下面两个需求,大家可以思考一下这两个需求在jmeter里面如何设置场景

需求1:我有一个页面,需要测试一下最大支持多少用户并发?

此时要计算的是最大用户并发数,强调的是同时操作,也可以理解为同时发起请求针对需求1我们可以通过RPS 定时器或者阶梯加压线程组测试每秒最大的请求数(压测实战分析性能拐点)

需求2:查询功能,需要系统能够在5分钟内能完成5000笔查询业务,同时90%的用户响应时间不超过3s。最大并发是多少?

此时不强调同时操作,而是强调业务量。也就是说不限制用户的操作时序,不考虑人的效率。把人当做机器,只要在5分钟内查询数满足5000笔即可。但是具体有多少用户才能在5分钟内查询5000次?它是由单次响应时间来决定的。这时就引入了一个经常被人讨论的公式:最大并发数= (单次响应时间*业务量)/总的业务时间。我的单次响应时间越快,用户每秒可点击的次数就越多,那么需求就越容易满足。

线程数和并发数

针对需求2,我们如何在jmeter中设置场景?由上面的描述可以知道,我们可以计算出最大并发数。那么这个最大并发数对应的就是jmeter中的线程数。光有线程数不行,此时又引入了一个迭代的概念。假设单线程下,单次请求的平均响应时间是200ms,那么这个单线程的请求1s内可以迭代5次。如果有100个线程,那么1s内就可以完成500笔业务。5分钟内完成的业务数就是5*60*500=15万笔。回到我们需求2,是不是远远超纲了?把线程数缩小,其实只需要4个线程,就可以在5分钟内超额完成5000笔业务了。4*5*5*60=6000

1-1
如图1-1,勾选循环永远的意思就是不限制单位时间内的迭代次数,以此加载最大压力。
注:如果循环次数设置了固定值,那么下发那个持续时间的设置是无效的。线程组会优先根据你的固定循环次数去执行迭代。也就是说,固定循环次数的执行顺序优于持续时间!但是如果循环次数设置为永远,再设置持续的时间,那么就会根据你的持续时间去加载最大的压力。

事物完成线程组(TPS线程组)

针对需求2,jmeter额外提供了一个线程组去满足它-- Arrivals Thread Group。在这个线程组中我们给予预期的业务量和业务时间,系统会自动启动线程去满足业务需求。

1-2
如图1-2,表示我的预期tps是50/s,在2s内达到预期值,同时保持这个tps运行20s,那么22s内我的业务量是22*50=1100

1-3
如图1-2,最大的系统并发数(启动的线程数)是319

总结

我们做性能测试,压力都是人为给予系统的。使用工具的目的也是为了模拟出用户的压力场景

5000并发_彻底理解 jmeter 的线程数与并发数之间的关系相关推荐

  1. java看不起c语言,为什么我感觉Java比C语言难呢?总觉得逻辑上没有C语言好理解。比如各种继承介面。包之间的关系。...

    为什么我感觉Java比C语言难呢?总觉得逻辑上没有C语言好理解.比如各种继承介面.包之间的关系.以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我 ...

  2. CPU,核心,线程,超线程技术以及它们之间的关系

    CPU,核心,线程,超线程技术以及它们之间的关系 总结: 1.CPU就是处理器.(物理核心) 2.我们任务管理器下看到的CPU总数,是你的CPU物理核心数用超线程技术虚拟出来的核心数. 3.线程数就是 ...

  3. 多少并发量算高并发_如何理解:程序、进程、线程、并发、并行、高并发?

    作者:大宽宽 链接:http://tinyurl.com/wx5xxho 在这里你可以了解: 为啥大家说的进程的意思有出入? 为啥并发那么难理解? 为啥高并发不仅仅是"高"+&qu ...

  4. 多线程导出excel高并发_怎么理解分布式、高并发、多线程

    一.什么是分布式? 分布式更多的是一个概念,是为了解决单个物理服务器容量和性能瓶颈问题而采用的优化手段,该领域需要解决的问题极多,在不同的技术层面上,又包括:分布式文件系统.分布式缓存.分布式数据库. ...

  5. 二元函数偏导数公式_多元函数的偏导数、方向导数、梯度以及微分之间的关系思考...

    本篇文章,探讨下多元函数微分学下的一些知识点之间的关系.包括全微分.偏导数.方向导数.梯度.全导数等内容. 初学这些知识的时候,学生会明显觉得这些概念不难掌握,而且定义及计算公式也很容易记住,但总觉得 ...

  6. jmeter吞吐量_深入理解Jmeter常用定时器

    bug 前言 jmeter并发测试每个请求之间是没有延时的,但实际工作有时候需要增加固定时间来测试,那么可以Jmeter定器组件,完成工作.其实这些知识百度一查就出来,为什么还要写,主要方便自己复习, ...

  7. java商城并发_一次线上商城系统高并发优化,涨姿势了~

    对于线上系统调优,它本身是个技术活,不仅需要很强的技术实战能力,很强的问题定位,问题识别,问题排查能力,还需要很丰富的调优能力. 本篇文章从实战角度,从问题识别,问题定位,问题分析,提出解决方案,实施 ...

  8. python访问数据库如何解决高并发_使用 Python 和 Oracle 数据库实现高并发性

    随着趋势发展的核心转向更多而不是更快发展,最大限度地提高并发性的重要性日益凸显.并发性使得编程模式发生了新的转变,可以编写异步代码,从而将多个任务分散到一组线程或进程中并行工作.如果您不是编程新手并且 ...

  9. python异步高并发_通过python异步通讯方式构建高并发压力测试工具

    背景说明 在工作中,要对一个接口进行压测,我当时就想通过python自己编写一个压力发生器. 初步方案(单线程循环发送) 通过循环向服务端发送请求,代码如下: #采用单步循环的方式循环测试 impor ...

最新文章

  1. FFMPEG视音频编解码学习(1)
  2. 风吹来_梅花香自苦寒来!一组赏心悦目的梅花图……
  3. Ubuntu 14.04中修复默认启用HDMI后没有声音的问题
  4. 用python批量下载网络图片_python批量下载图片的三种方法
  5. LeetCode 6 - ZigZag Conversion
  6. JavaScript基础和记背内容 Day1
  7. 设计模式之桥接模式(Java语言描述)
  8. 《梦断代码》读后感2
  9. android中webview的实现
  10. 海思demo删减_从零开始在海思Hi3559a运行demo
  11. 使用 RuPengGame游戏引擎包 建立游戏窗体 如鹏游戏引擎包下载地址 Thread Runnable 卖票实例...
  12. 201871010114-李岩松《面向对象程序设计(java)》第四周学习总结
  13. MATLAB矩阵基础知识(二)
  14. Win10文件名排序
  15. ES2015 解构 Destructuring
  16. 01时态(1):疑问句
  17. KSO-vue创建项目以及安装npm与node
  18. c语言中\n,\t,\r,\b的用法和区别
  19. linux服务器配置磁盘阵列,linux 磁盘阵列 raid1搭建教程
  20. Spring Security oAuth2创建认证服务器模块

热门文章

  1. python分布式开发容易吗_Python能实现分布式的进程吗?
  2. P4177 [CEOI2008]order
  3. 数组自带的函数(方法)
  4. 如何让.Net线程支持超时后并自动销毁!
  5. Win32中GDI+应用(一)
  6. linux输入输出重定向详解
  7. protobuf-3.0 win环境编译
  8. 报错:error while loading shared libraries: libz.so.1: cannot open shared object file
  9. Android input keyevent命令
  10. android之读取相册照片并显示