概述

在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

总结

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

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

  1. 5000并发_彻底理解 jmeter 的线程数与并发数之间的关系

    概述 在jmeter中,只要提到并发,99%的同学立马想到线程组.需要多少并发就启动多少线程组,这已经成了大部分人的共识.这种理解方式很明显是把并发数和线程数的概念混淆了.线程组中不光有线程数,也有循 ...

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

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

  3. springboot tomcat默认线程数_记一次JAVA线程池的错误用法

    最近项目一个项目要结项了,但客户要求 TPS 能达到上千,而用我写的代码再怎么弄成只能达到 30 + 的 TPS,然后我又将代码中能缓存的都缓存了,能拆分的也都拆分了,拆分时用的线程池来实现的:其实现 ...

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

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

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

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

  6. c++矩阵出现奇怪的数_如何理解人们在决策中的“矩阵”运算?

    我们如何认识这个世界?我们对世界的认识其实就是世界在我们观念中的"投影". "投影",原意是把一个三维的物体投射到一个二维的平面,这个平面上的形状就是投影.因此 ...

  7. jmeter 用户数 线程数_如何使用jmeter编写TCP测试脚本

    创建线程组 新建线程组后,会出现一个线程组的配置界面,如下 Number of Threads(users):这是 JMeter 中的线程数,也可以称之为用户数,是产生TPS的,至于产生多少的TPS取 ...

  8. vue 限制渲染条数_深入理解Vue 的条件渲染和列表渲染

    这两天学习了Vue.js 感觉条件渲染和列表渲染知识点挺多的,而且很重要,所以,今天添加一点小笔记. 条件渲染 v-if 在 < template > 中配合 v-if 渲染一整组 在使用 ...

  9. python 并发访问数据库_【数据库】如何实现python3实现并发访问水平切分表

    本篇文章给大家带来的内容是关于如何实现python3实现并发访问水平切分表,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 场景说明 假设有一个mysql表被水平切分,分散到多个hos ...

  10. Java并发编程实战_一线大厂架构师整理:java并发编程实践教程

    并发编程是Java语言的重要特性之一, 在Java平台上提供了许多基本的并发功能来辅助开发多线程应用程序.然而,这些相对底层的并发功能与上层应用程序的并发语义之间并不存在一种简单而直观的映射关系.因此 ...

最新文章

  1. Ajax简单的请求数据以表格的形式渲染到页面
  2. wordpress 后台,登录,注册开启https的重写规则
  3. deepin--解决QQ时间与系统时间不一致
  4. C语言图书信息管理系统简单,线性表简单实现图书信息管理系统(C语言版)
  5. BZOJ 2631 tree(动态树)
  6. 邹欣对话图灵奖得主Jeffrey Ullman:数据库不会进入周期性的坏循环|《新程序员》...
  7. chmod命令文件权限属性设置(linux/cygwin)
  8. 2018年9月28号-10月9号
  9. c++ STL之unordered_map
  10. Linux 常用的命令
  11. 便携式文件夹加密器 lockdir 5.74
  12. KEIL编译时Warning: C3008W: splitting LDM/STM has no benefit的消除
  13. 【Linux】Linux系统编程入门
  14. 像西方知识分子那样登场
  15. 【2015NOIP普及组】T4:推销员 试题解析
  16. 衬线字体和非衬线字体区别
  17. USACO健康的荷斯坦奶牛(DFS,二进制暴力枚举)
  18. cocos creator 实现手机震动的效果
  19. 联发科发布全新旗舰5G芯片;全球半数雇主计划加薪并恢复至正常招聘水平 | 美通企业日报...
  20. 什么是第三方登录,第三方登录如何选择

热门文章

  1. 项目中遇到的各种bug和踩过的坑
  2. C++ - 派生类访问模板基类(templatized base class)命名
  3. Android入门学习3
  4. 我的Java开发学习之旅------Java ClassLoader解析一(转)
  5. iOS 6 SDK: 在应用内展示App Store
  6. 第1章 Spark SQL概述
  7. 自定义头文件之二------hlib.h(慢慢更新)
  8. django的render的特殊用法
  9. Linux服务器配置Redis并启用PHP支持
  10. 轻松搞定C语言中复杂的声明