Linux做施压机的最大线程数,关于性能测试的几个要点

几个定义

性能测试(Performance Test)

通常收集所有和测试有关的所有性能,通常被不同人在不同场合下进行使用。测试软件在系统中的运行性能,度量系统与预定义目标的差距。

关注点:how much和how fast

负载测试(Load Test)

负载测试是一种性能测试,指数据在超负荷环境中运行,程序是否能够承担。通过逐步增加系统负载,确定在满足性能指标的情况下,系统所能承受的最大负载量。

关注点:how much

压力测试(Stress Test)

压力测试是一种高负载下的负载测试,也就是说被系统处于一个负载的情况,再继续对他进行加压,形成双重负载,知道系统崩溃,并关注崩溃后系统的恢复能力,以前再加压的一个过程,看看系统到底是否已经被彻底破坏掉了。

有个很形象的说法就是:你能够承担100千克的重量,而且也能走,但是你能否承担100千克的重量行走1个月。

外部的负载叫压力,内部的压力叫负载。负载注重关注内部的以及系统自身一些情况;而压力更关注系统外部的表象.

性能测试模型

ffc23452bc762c00a417fcb2d98ebae6.png

性能测试的执行过程是由轻到重,逐渐对系统施压。通常用户最关心的性能指标包括:响应时间、吞吐量、资源利用率和最大用户数。我们可以将这张图分成3个区域,即:轻负载区域、重负载区域和负载失效区域。

· 轻负载区域

在这个区域您可以看到随着虚拟用户数量的增加,系统资源利用率和吞吐量也随之增加,而响应时间没有特别明显的变化;

·重负载区域

在这个区域您可以发现随着虚拟用户数量的增加,系统资源利用率随之缓慢增加,吞吐量开始也缓慢增加,随着虚拟用户数量的增长,资源利用率保持相对的稳定(满足系统资源利用率指标),吞吐量也基本保持平稳,后续则略有降低,但幅度不大,响应时间会有相对较大幅度的增长;

·负载失效区域

在这个区域系统资源利用率随之增加并达到饱和,如CPU利用率达到95%甚至100%,并长时间保持该状态,而吞吐量急剧下降和响应时间大幅度增长(即:出现拐点)。

·两个交界点

在轻负载区域和重负载区域交界处的用户数,我们称为"最佳用户数"。而重负载区域和负载失效区域交界处的用户数则称为"最大用户数"。

当系统的负载等于最佳用户数时,系统的整体效率最高,系统资源利用率适中,用户请求能够得到快速响应;

当系统负载处于最佳用户数和最大用户数之间时,系统可以继续工作,但是响应时间开始变长,系统资源利用率较高,并持续保持该状态,如果负载一直持续,将最终会导致少量用户无法忍受而放弃;

而当系统负载大于最大用户数时,将会导致较多用户因无法忍受超长的等待而放弃使用系统,有时甚至会出现系统崩溃,而无法响应用户请求的情况发生。

并发用户数

相对并发用户数(用户视角)

即线用户数,在一个时间段内,与服务器进行了交互、对服务器产生了压力的用户的数量。这个时间段,可以是一天,也可以是一个小时。

70026a8e72bbc0ff0e90edacf6d93f48.png

通常像ab、wrk等并发工具设定的并发数,就是指的这个并发数,比如在JMeter中,如果将某个线程组的线程数设置为100,那是不是对于这个类型的请求,并发量就是100。从宏观的角度,这样理解也是对的,就好比请了100个人,每个人独立地完成一连串的工作,确实是100个在并行。但是对于服务器感受到的压力,可能就不是100了。

这里所谓的100个并行对于服务端而言并不是严格的全部并行,因为每个虚拟用户执行的节奏是独立。假设这个操作需要3个请求完成,那么很有可能出现这样的情况:某个虚拟用户还在等待第一个请求的响应,但是另一个虚拟用户已经收到了第一个请求的响应并发起了第二个请求。那么对于服务端而言,在某一个时刻,无论是对于请求1还是请求2,并行度都没有到100。这个模型比较类似于图中右边部分所示的模型。理解这个模型对于并行的理解非常重要。

这里的差异在于宏观上的并行还是严格意义上的并行,比如就某个请求的严格意义上的并行或许可以通过TCP连接的保持数来看。通过“netstat|grep ESTABLISH|wc-l”命令获得保持连接状态的TCP请求数量。也就是下面的绝对并发用户数。

并发与并行是相关的概念,但是也有很多细节上的差异。并发意味着两个或更多的任务正在取得进展,即使它们不是同时执行的。例如,可以用时间片的方式实现这一点,每个任务在时间片内执行一小部分,并与其它任务的切片混合执行。如并发收集器。并行的出现使任务实现了真正的同时执行。

绝对并发用户数(服务器视角)

主要是针对某一个操作进行测试,即多个用户同一时刻发起相同请求。

8608e7359c1991d20a0a98d3909750a1.png

图中,每一个颜色的线段代表一种操作。在任意一个时刻,服务器都知道它有10个事务需要处理,这10个事务也是有10个用户产生的。但它不知道的是,整个时间段内的所有事务,是由多少个用户与系统交互而产生的。时刻1,10个当前事务是由10个用户发起的。时刻2,依然是10个正在进行的事务,但可能是完全不同的10个人发起的。在这段时间内,服务器每一个时刻都在处理10个事务,但是参与了这个交互过程(对服务器产生压力)的人可能会达到上百个,也可能只有最开始的10个。那么,对于服务器来说,压力是什么呢?显然只是每时刻这10个同时处理的事务。

Think Time

在进行相对并发用户数的测算时,think time的设置会影响测试的结果。设想这样的一个场景,一个真实的用户在某个电商网站上购物,一个简化的流程可能如下: 1)进入首页 2)搜索一个商品 3)查看商品详情 4)加入购物车 5)提交订单 6)完成支付 基于上面的讨论我们可以构造一系列JMeter请求,放在一个线程组里面。 如果我们要测试针对这样的用户,我们的系统可以支持多少人同时来购物。假设我们已经考虑了用户登录账号和购买商品的参数化问题,是否可以直接将线程组的数值设置到一个较大的数值,然后并发执行呢?

这样可以执行起来,但是有一个很大的问题。在于真实用户和脚本的不同。脚本如果是基于前面方法录制的,两个请求的执行时间之前是没有任何其他停顿的,其间隔只是依赖于上一个服务的响应时间和测试机发起请求所需的时间。但是显然真实的用户不是机器,他们在做上面每一个步骤的时候都有一个思考的时间,这也是Think Time这个词的意义来源。

当然,这个思考时间也是泛指,包括了用户操作的时间,比如进入首页后,用户需要在搜索框中输入想购买商品的关键词,打开输入法并输入相关的词可能也需要少则几秒钟的时间,搜索结果出来之后用户需要浏览和选择,找到感兴趣的商品并点击查看详情,后面的步骤也是类似。 试想一下,对比请求连续执行和每个步骤间加入模拟真实用户的Think Time之后,对于同一个系统,能支持的同时在线购物人数必定会有绝大的差异,而有Think Time的做法显然更接近真实情况。

准备工作

不同的机器、操作系统、web服务器以及相关参数等的不同,也会影响性能测试的结果。有必要在测试前对参数进行一下配置。

参考做一个正确的性能测试以及高负载系统,网络参数调整进行调优。这里列一下操作系统的几个重要参数。

fs.file-max = 999999

net.ipv4.tcp_tw_reuse = 1

net.ipv4.tcp_keepalive_time = 600

net.ipv4.tcp_fin_timeout = 30

net.ipv4.tcp_max_tw_buckets = 5000

net.ipv4.ip_local_port_range = 1024    61000

net.ipv4.tcp_rmem = 4096 32768 262142

net.ipv4.tcp_wmem = 4096 32768 262142

net.core.netdev_max_backlog = 8096

net.core.rmem_default = 262144

net.core.wmem_default = 262144

net.core.rmem_max = 2097152

net.core.wmem_max = 2097152

net.ipv4.tcp_syncookies = 1

net.ipv4.tcp_max_syn.backlog=1024

· file-max:这个参数表示进程(比如一个worker进程)可以同时打开的最大句柄数,这个参数直接限制最大并发连接数,需根据实际情况配置。

· tcp_tw_reuse:这个参数设置为1,表示允许将TIME-WAIT状态的socket重新用于新的TCP连接,这对于服务器来说很有意义,因为服务器上总会有大量TIME-WAIT状态的连接。 - tcp_keepalive_time:这个参数表示当keepalive启用时,TCP发送keepalive消息的频度。默认是2小时,若将其设置得小一些,可以更快地清理无效的连接。

· tcp_fin_timeout:这个参数表示当服务器主动关闭连接时,socket保持在FIN-WAIT-2状态的最大时间。

· tcp_max_tw_buckets:这个参数表示操作系统允许TIME_WAIT套接字数量的最大值,如果超过这个数字,TIME_WAIT套接字将立刻被清除并打印警告信息。该参数默认为180000,过多的TIME_WAIT套接字会使Web服务器变慢。

· tcp_max_syn_backlog:这个参数表示TCP三次握手建立阶段接收SYN请求队列的最大长度,默认为1024,将其设置得大一些可以使出现Nginx繁忙来不及accept新连接的情况时,Linux不至于丢失客户端发起的连接请求。

· ip_local_port_range:这个参数定义了在UDP和TCP连接中本地(不包括连接的远端)端口的取值范围。

· net.ipv4.tcp_rmem:这个参数定义了TCP接收缓存(用于TCP接收滑动窗口)的最小值、默认值、最大值。

· net.ipv4.tcp_wmem:这个参数定义了TCP发送缓存(用于TCP发送滑动窗口)的最小值、默认值、最大值。

· netdev_max_backlog:当网卡接收数据包的速度大于内核处理的速度时,会有一个队列保存这些数据包。这个参数表示该队列的最大值。

· rmem_default:这个参数表示内核套接字接收缓存区默认的大小。

· wmem_default:这个参数表示内核套接字发送缓存区默认的大小。

· rmem_max:这个参数表示内核套接字接收缓存区的最大大小。

· wmem_max:这个参数表示内核套接字发送缓存区的最大大小。

· tcp_syncookies:该参数与性能无关,用于解决TCP的SYN攻击。

21/212>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/527870.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

线性分组码c语言实验报告,C语言线性分组码(附注释).doc

C语言线性分组码(附注释).doc下载提示(请认真阅读)1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。2.下载的文档,不会出现我们的网址水印。3、该文档所得收入(下载内容预览)归上传者、原创作者&a…

杭电2005题c语言答案,杭电2005

题不难,但细节较多,所以。。。不但二月闰年有影响,七八月都是31天,这个也得专门分开讨论,还有就是七八月份开讨论后,加的基数是三到七月的,不能完全复制上面的代码,基数得改~做题还是…

android自定义dialog 全屏,自定义dialog全屏显示

默认的Dialog是不能全屏的。也就是怎么设置Dialog的Layout都没用的。下面给出实现Dialog实现全屏的两种方式:1、代码实现。这中方法相对比较简单首先继承Dialig,然后再构造函数中添加super(context, android.R.style.Theme);setOwnerActivity((Activity)…

全志android启动串口无打印,CSK.Blog-给MK802(USB大小的Android4.0小PC)引出串口信号,变成ARM开发版...

最近忙各类事情,blog写的不系统,见谅。这几天搞到了前不久被媒体宣传过的只有U盘大小的Android 4.0小PC。他的样子如下,使用HDMI接口连接显示器再外接一个usb键盘鼠标就能作为PC用了。托朋友买了台,试用了下果然还不错&#xff0c…

支付宝 android 2.3,app被拒记录-2.3-包含支付宝

2. 32020年8月21日 上午1:29发件人 Apple* 2. 3 Performance: Accurate Metadata### Guideline 2.3.1 - PerformanceWe discovered that your app contains hidden features. Attempting to hide features, functionality or content in your app is considered egregious beha…

html中图片动态效果代码,动态网页设计代码 网页制作动态图片效果源代码

动态网页设计需要用到什么工具?一般的用网页三剑客,dreamwear一般必用,比较好上手的,html是要懂的,cssdiv的标注设计也是要学习的。 如果是做前台页面设计会用到的工具:firework、flash、ps、 coreldraw 如…

html文件设置断点调试,断点调试

断点调试使用 ES2015 特性来开发 Node.js 项目可以带来巨大的便利,但同时由于有些特性现在还不支持,需要借助 Babel 编译,运行的代码实际上是编译后的代码,这样给调试带来很大的麻烦。ThinkJS 从 2.2.0 版本开始支持断点调试源代码…

html如何太假icon图标,CSS3 icon font完全指南(CSS3 font 会取代icon图标)

为什么要将icon做成字体?在很多网站项目中,我们常常会用到各种透明小图标,然后网站要兼容各个浏览器,也可能会有多个尺寸,甚至还要考虑换肤等需求。那么我们就要将这些小图标输出为多种尺寸、颜色和文件格式&#xff0…

html5 video 直播流无声音,【报Bug】html5plus 使用 VideoPlayer 播放部分rtmp没有声音

详细问题描述[内容]使用 html5plus 使用 VideoPlayer 播放流媒体,播放m3u8格式正常,但rtmp格式部分有问题。希望官方能确认是否是html5plus自身的缺陷呢,是否对某些编码类型的rtmp不支持?1、比如社区之前出现过的湖南卫视rtmp&…

kodi android 目录,Kodi添加本机和电脑上的电影视频、音乐、图片目录教程

很多人都想在家看电影时能享受到电影院的那种大屏快感,Kodi正是这样的一款强大的家庭影院影音播放中心!不过有些用户对它的使用不是很了解,我们一起来学习一下。使用Kodi你可以非常方便地在客厅的 Kodi 中播放寝室电脑里或 NAS 中下载好的电影…

2021深圳各中学高考成绩查询,深圳四大高中在2021年高考深一模的前500名分布数据...

看到深圳四大高中在2021年高考深一模的前500名分布数据:深圳中学名列前茅,前500名中占166席,且文科、理科第一名均来自深中;物理方向前10名中深中6人,实验3人;历史方向前10名中深中3人。深圳实验学校高中部有84人进入前…

微型计算机各部件之间通过总线传递各种信息,2015年9月计算机一级考试基础及MSOffice应用选择真题...

一、选择题(每小题1分,共20分)1、控制器的主要功能是 .A.指挥计算机各部件自动、协调地工作B.对数据进行算术运算C.进行逻辑判断D.控制数据的输入和输出2、下列度量单位中,用来度量CPU时钟主频的是 .A.MB&a…

html推箱子怎么清除走过的,第九讲:HTML5该canvas推箱子原型实现

动body{margin:0px;padding:0px;}#main{margin: 100 auto 0 auto;border: 10px solid #030303;300px;height:460px;border-radius:10px;}var canvas document.getElementById(mc);var cxt canvas.getContext(2d);//定义背景的颜色function init_background(){cxt.fillStyle …

大学计算机要学多久,大学刚开学要不要带电脑?很多人都很后悔,学长学姐把经验告诉你...

大学刚开学要不要带电脑?很多人都很后悔,学长学姐把经验告诉你文/小川说车况大学刚开学,学生们要不要带电脑呢,想必这个问题一直对还没进入大学的准大学生来说很困扰,一方面既担心在学校里面用电脑的时候不方便&#x…

怎么知道自己是否适合计算机专业,事实:我怎么知道我的旧计算机是否适合win7或win10?...

实际上,win10并不大!只是对内存和硬盘的要求更高!根据官方的最低操作要求,硬件要求如下:1、[处理器]:Win10系统的安装要求计算机的处理器以不低于1GHz的速度运行2、[运行内存]:Win10 32位操作系…

金工如何运用计算机思维,金工实训心得体会

金工实训心得体会我们有一些启发后,就很有必要写一篇心得体会,如此可以一直更新迭代自己的想法。那么心得体会到底应该怎么写呢?以下是小编为大家整理的金工实训心得体会,希望能够帮助到大家。金工实训心得体会1时间过得真快&…

福州3 2五年制计算机专业的学校,福州有哪些五年制大专

福州的五年制大专有福州环保职业中专学校、福建工业学校、福建理工学校、福建经济学校、福建建材工业学校、福建商贸学校、福州电子职业中专学校、福建化工学校、福建工贸学校、福州文教职业中专学校、福建经贸学校、福州商贸职业中专学校、福州工业学校、福州建筑工程职业中专…

石家庄计算机专接本学校有哪些,河北省内的专接本学校都有哪些?

满意答案mary3978702013.02.28采纳率:41% 等级:13已帮助:9063人防灾技术高等专科学校河北工程技术高等专科学校保定师范专科学校承德民族师范高等专科学校保定金融高等专科学校承德石油高等专科学校沧州师范专科学校沧州医学高等专科学校邢…

计算机原理转移指令题,转移指令计算机原理.pdf

转移指令计算机原理.pdf 3.3.5 程序控制指令程序控制指令 程序控制指令又称为控制转移指令,包括转移指令、循环控制指令、过程调用指令和 中断指令 4 类。转移指令又分为无条件转移指令和条件转移指令。 1无条件转移指令无条件转移指令 JMP 计算机程序的执行完全按照…

静态常量放在什么包里面_在沙雕游戏里面用表情包打架,是一种什么体验

在日常的聊天中,不少人都会随手发一些表情包表达自己的心情,其中就有不少是动物的表情包。早些时候,推特上曾经流行过一些沙雕的动物表情包,大多数都是通过视觉上的误差,许多网友发挥自己丰富的想象力,让这…