做性能测试的参数(做性能测试的参数是什么)

来源网友投稿 846 2023-01-07

本站部分文章、图片属于网络上可搜索到的公开信息,均用于学习和交流用途,不能代表睿象云的观点、立场或意见。我们接受网民的监督,如发现任何违法内容或侵犯了您的权益,请第一时间联系小编邮箱jiasou666@gmail.com 处理。
本篇文章给大家谈谈做性能测试的参数,以及做性能测试的参数是什么对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。 今天给各位分享做性能测试的参数的知识,其中也会对做性能测试的参数是什么进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

性能测试都有哪些指标?

包括负载测试,强度测试,数据库容量测试,基准测试以及竞争测试。
负载测试,一种性能测试指数据在超负荷环境中运行,程序是否能够承担。在这种测试中,将使测试对象承担不同的工作量,以评测和评估测试对象在不同工作量条件下的性能行为,以及持续正常运行的能力。
对计算机软件进行测试前,首先需遵循软件测试原则,即不完全原则的遵守。不完全原则即为若测试不完全、测试过程中涉及免疫性原则的部分较多,可对软件测试起到一定帮助。
因软件测试因此类因素具有一定程度的免疫性,测试人员能够完成的测试内容与其免疫性成正比,若想使软件测试更为流畅、测试效果更为有效,首先需遵循此类原则,将此类原则贯穿整个开发流程,不断进行测试,而并非一次性全程测试。

性能测试:MPM模块常见的相关参数有哪些呢?

MPM模块常见的相关参数包括: MaxSpareServers、MinSpareServers、ServerLimit、StartServers、ThreadsPerChild、MaxConnectionsPerChild 、MaxRequestWorkers、ListenBackLog、ListenCoresBucketsRatio、MaxMemFree和ReceiveBufferSize 。

该指令设置空闲子进程的最大数量。所谓空闲子进程是指没有正在处理请求的子进程。如果当前有超过MaxSpareServers数量的空闲子进程,那么父进程将杀死多余的子进程。只有在非常繁忙机器上才需要调整这个参数,此参数设的通常不能设置过大,直到空闲线程的数量小于该数量为止。如果你将该指令的值设置为比MinSpareServers小,Apache将会自动将其修改成“MinSpareServers+1”。

对于worker和event来说,该荐默认值为 MaxSpareThreads 250。

对于mpm_netware默认为 MaxSpareThreads 100。

mpmt_os2的工作与mpm_netware。对于 mpmt_os2默认值10。

▲ 注意:

MaxSpareThreads值的范围受到限制。Apache httpd将根据以下规则自动更正给定值:

● mpm_netware该值需要大于 MinSpareThreads。

● 对于worker和event,该值必须大于或等于 MinSpareThreads和 ThreadsPerChild的和。

表示处理请求峰值的最小空闲线程数。不同的MPM处理此指令的方式有所不同。

worker模块和event模块该项默认值为 MinSpareThreads 75。如果服务器的空闲线程数小于所设置的值,则会创建子线程,直到空闲线程数大于我们所设置的最小空闲线程数。

如果服务器中没有足够的空闲线程,则将创建子进程,直到空闲线程的数量大于number为止。如果ListenCoresBucketsRatio 启用,可能会创建其他进程/线程。mpm_netware模块的默认值为 MinSpareThreads 10,对于 mpmt_os2模块默认值为5。

对于preforkMPM来说是通过MaxRequestWorkers来配置的,因为preforkMPM是一个子进程只生成一个线程。对于worker和eventMPM来说会通过ThreadLimit和MaxRequestWorkers两个参数来配置其最大值。MaxRequestWorkers指令可以在服务器重启过程中修改。

使用这个指令时必须特别注意的是,ServerLimit的值不能设置的比实际的使用的值高出太多,如果设置的值过大,则会分配很多我们并不需要使用的内存。如果将ServerLimit和MaxRequestWorkers都设置为高于系统可以处理的值,则Apache httpd可能无法启动,或者系统可能变得不稳定。

▲ 注意: 一般来说ServerLimit最大的值可以设置到20000,这是由服务器限制的,如果需要设置为更大的值,那么需要修改mpm源文件中的MAX_SERVER_LIMIT值。

StartServers指令用于设置启动时创建的子服务器进程的数量。通常会根据 MinSpareThreads、 MaxSpareThreads、 MinSpareServers、MaxSpareServers来动态调整StartServers的值。

缺省值因MPM而异。worker和event默认为StartServers 3,prefork默认为5,mpmt_os2 默认为2。

该指令表示设置每个进程创建的线程数,服务器启动时先是创建子进程数,再创建线程,如使用mpm_winnet模块,则只会生成一个子进程,那么该指令设置应该需要大于服务器处理的最大负载,如果使用worker模块,会生成多个子进程,则线程总数应大于服务器的负载。

mpm_winnt该指令的缺省值为25。其它的MPM缺省值ThreadsPerChild是 64。

ThreadsPerChild设置的值不能超过ThreadLimit的值。如果配置了更高的值,它将在启动时自动减小并记录警告日志信息。

MaxConnectionsPerChild这个指令主要是设置单个子进程最多可以处理的连接数。如果子进程伺服的连接数达到这个最大值,那么该子进程就会被杀掉。如果将MaxConnectionsPerChild的值设置为 0,那么表示该子进程可以处理无限多和连接数。将MaxConnectionsPerChild为非零的值,可以限制由于内存泄漏导致进程消耗太多内存量的问题。

MaxRequestWorkers指令主要是用于设置服务器同时处理的最大连接数,如果超过所设置的值,那么就会出现排队的现象,最大排队值是由ListenBacklog 指令来设置,在排队过程中,只有当一个请求结束后才会释放出子进程给其它的连接服务使用。

对于这非线程服务的MPM模块(如prefork),MaxRequestWorkers指令将转换为服务器最大的子进程数,即ServerLimit的值。MaxRequestWorkers指令默认值为 256。

对于会产生多线程类的MPM模块(如event 或worker),MaxRequestWorkers指令将用来限制服务器客户端的连接连接数。混合的MPM,默认的ServerLimit值为16,默认的ThreadsPerChild值为25,在这种情况下设置MaxRequestWorkers指令的值必须大于16乘以25的积。

在2.3.13版之前MaxRequestWorkers指令以前的版称之为MaxClients。

ListenBackLog指令用于设置连接数队列长度,默认值为511,一般情况下我们不需要对这个指令进行设置或调整,但如果某些系统受到TCP SYN攻击时,可以适当的增加这个值。

这个选项有两个核心内容要搞清楚, 一是在线CPU核数;二是监听桶。

首先我们介绍什么是在线CPU核数。kernel使用4个bitmap,来保存分别处于4种状态的CPU core:possible、present、active和online。其中online就是表示在线的CPU核数。在/sys/devices/system/cpu目录下有一个文件online记录着当前所有在线的CPU核数。

linux操作系统在初始化的时候会调用开启smp多核。cpuhotplug可以根据cpu负载的情况,自动开核,做到性能与功耗的平衡。最后空闲的cpu会进入cpuidle状态。 cpuhotplug原理如图10-6所示 。

要研究监听桶那么就必须先理解TCP连接的过程,以及TCP连接与套接字的关系。

TCP连接过程如图10-7所示。

listen函数是用来监听已经通过bind()函数绑定了addr+port的套接字。监听之后,套接字就从CLOSE状态转变为LISTEN状态,这个套接字就可以对外提供TCP连接的窗口。connect()函数则用于向某个已监听的套接字发起连接请求,也就是发起TCP的三次握手过程。

那么TCP连接与套接字有什么关系呢?每个TCP连接不管是客户端还是服务器端都会关联一个套接和该套接字所指向的文件描述符。当服务器接受到ACK消息后,则表示三次握手已经完成,客户端和服务器端的TCP连接已经建立好了。TCP连接建立好后,这个TCP连接会放在listen()打开的established queue队列中等待accept的消息,此时TCP连接关联的套接字是listen套接字和指向文件的描述符。

当established queue队列中的TCP被accept()接受后,就会关联accept()所指定的套接字,并分配一个新的文件描述符,也就是说经过accept()后,这个连接和listen套接字已经没有任何关系了。

一般情况下一个addr+port只能被一个套接字绑定,也就说是addr+port不能重用,不同套接字只能绑定在不同的addr+port上。

监听套接字的线程都是抢占式监听,在同一时刻监听套接字上只能有一个监听线程在监听或者说在使用,当这个监听线程接收到请求后,会让出监听的资格,此时其它的监听线程会去抢这个监听权,但同时只能有一个线程抢到监听权。 其工作过程如图10-8所示。

正常情况下addr+port只能被一个套接字绑定,如果将地址和端口重用,那么组合起来就是套接字重用,在现在的linux内核中支持地址重用,socket选项SO_REUSEADDR,支持端口重用的socket选项SO_REUSEPORT。设置了端口重用选项后,再去绑定套接字,相当于一个实例绑定了两个或多个addr+port。对于监听进程/线程来说,每次重用的套接字被称为监听桶(listener bucket),即每个监听套接字都是一个监听桶。以httpd的worker或event模型为例,假设目前有N个子进程,每个子进程又包含一个监听线程和N个工作线程。 其工作过程如图10-9所示 。

使用了地址重用和端口重用技术,就相当于同一个addr+port绑定多个套接字。 如图10-9 一个监听桶下面绑定了三个套接字,同时会有三个线程来监听三个套接字,但每个套接字还是与地址未重用和端口未重用一样的逻辑都是抢占式的方式来获取监听权。

地址重用和端口重用带好的好处就是可以减轻监听时互斥锁的争抢,避免“饥饿问题”,提高监控效率,并且可以更好的实现负载均衡,但这个也受限于CPU的核心,如果只是单核的CPU,那么地址重用和端口重用并没有什么优势,因为线程数不够。

现在可以明白ListenCoresBucketsRatio这个选项的含义了,即设置在线CPU核数与监听桶的比例。

在MPM线程中,每个线程都有自己的分配器,该参数表示不调用free()函数进行释放内存时,

允许每个分配器保持的最大空闲内存数。如果设置为零时表示该阀值不受限制。

用于设置TCP接收数据时缓存区的大小,如果设置为0则表示以操作系统的这个值为准。

以上是MPM模块中涉及到的常见的指令设置。

磁盘性能压测二三事之——性能参数和指标

摘要: 本文就将通过对磁盘性能测试指标及参数做性能测试的参数的介绍做性能测试的参数,来理解以上两个原因为什么会对测试结果有影响。
近日工作中遇到了一个磁盘压测时性能上不去的问题做性能测试的参数,经排查,发现原因有以下几个方面:

1 测试参数的选择

2 业务逻辑未关闭

本文就将通过对磁盘性能测试指标及参数的介绍,来理解以上两个原因为什么会对测试结果有影响。

首先来介绍一下磁盘性能的测试指标。

最常用的磁盘性能评价指标有两个:IOPS和吞吐量(throughput)。IOPS是Input/Output Per Second的缩写,它表示单位时间内系统能处理的I/O请求数量,即每秒钟系统能处理的读写次数。

吞吐量衡量单位时间内系统能处理的数据的体量,即每秒钟磁盘上能读写出的数据量的大小,通常以kB/s或MB/s为单位。

两个指标相互独立,又相互关联,在不同业务场景下,侧重关注的指标也有所不同。

对于文件尺寸小,随机读写比较多的场合,比如在线交易处理系统,做性能测试的参数我们倾向于更关注IOPS,因为我们更在乎的是每秒钟能处理多少条交易。

而对于文件尺寸较大,顺序读写比较多的场合,比如视频播放服务,数据吞吐量将会成为我们主要的考量指标。

举个例子来帮助我们更好的理解这两个指标。磁盘IO就相当于我们有货物(数据)需要从A处(系统)与B处(磁盘)之间往返。货物(数据量)有多有少,因此运货车也有大有小。B处有装卸工人负责将货物卸载到仓库的指定位置,或者从仓库指定位置提取货物装载到货车上。

每次货车运输一趟货物就相当于处理一个IO请求,工人装卸货物就相当于磁盘对IO的读写处理。在工人数量和工人装卸货物速度(磁盘数据处理速度)保持一定的情况下,装卸大车上货物的时间一定会比小车上的时间长,装卸一大车货物的时间,可能已经够小车运输若干趟货物(IOPS高)。但是小车由于多次往返,其花在路上的时间要比大车多,同时每次装卸货物工人需要寻找正确的位置存取货物(磁盘寻址时间),比起大车的一次寻址,小车运货就也浪费了更多时间。因此在相同时间内,采用大车运输的货物总量是比小车要多的(吞吐量高)。

这也是为什么我们在做磁盘性能测试的时候,通常一次只关注一个指标,追求IOPS,就用小车运输少量货物,多次往返。追求吞吐量,就用大车运送大量货物,节省路上及寻址所花费的时间。
下面再说一下磁盘测试的影响因素。

实际测量中,IOPS会受到很多因素的影响,比如:

1 数据块大小

相当于我们前面说的大车和小车运货的情况

2 顺序和随机

顺序就是我们的货物都按顺序安排在仓库的一处,随机则意味着货物随机的分配在仓库的不同地点,可以想见,货物地点存放比较随机的情况下,存取货物一定是更费时间的。

3 队列深度

如果我们每次只发一辆货车在AB之间往返,那么当货车在A处处理货物或者在AB之间的路上跑的时候,B处的工人就处于闲置的状态,压力测试时,我们绝对不希望这种情况发生,我们需要工人(磁盘)一直工作,从而得出磁盘的最高性能。想实现这一点,我们可以通过一次发多辆车来解决,保持始终有车辆在等待处理的队伍里,这样装卸工人就一直有工作可做了。

队列深度就是等待处理的队伍里的货车以及正在被装卸的货车的总数量。
4 线程数

测试时,增加线程数也可以增加并发度,从而使装卸工人一直处于有工作可做的状态。

5 读写比例

读操作相当于我们将货从B中的仓库取出来,运到A处就结束了。而写操作意味着货物在A处经过一番处理之后还要再运回B处并存储在仓库中。因此不同的读写比例也会造成测试结果的不同。

正是由于这些不同影响因素的存在,我们在对磁盘进行性能测试时,需要仔细选择测试参数,否则将无法测出磁盘的最优性能。同时应将测试参数和方法定性定量,否则测试结果将失去比较的价值。

以 云盘参数和性能测试方法:

https://help.aliyun.com/document_detail/25382.html

一文中介绍的测试IOPS的方法为例,我们来看一下linux常用测试工具fio的参数如何体现以上影响因素。

测试随机写IOPS:fio-direct=1-iodepth=128-rw=randwrite-ioengine=libaio-bs=4k-size=1G-numjobs=1-runtime=1000-group_reporting-filename=/dev/[device]-name=Rand_Write_Testing测试随机读IOPS:fio-direct=1-iodepth=128-rw=randread-ioengine=libaio-bs=4k-size=1G-numjobs=1-runtime=1000-group_reporting-filename=/dev/[device]-name=Rand_Read_Testing测试写吞吐量:fio-direct=1-iodepth=64-rw=write-ioengine=libaio-bs=1024k-size=1G-numjobs=1-runtime=1000-group_reporting-filename=/dev/[device]-name=Write_PPS_Testing测试读吞吐量:fio-direct=1-iodepth=64-rw=read-ioengine=libaio-bs=1024k-size=1G-numjobs=1-runtime=1000-group_reporting-filename=/dev/[device]-name=Read_PPS_Testing

其中:

iodepth:队列深度。异步引擎下起作用。

rw: 读写模式,可选模式有顺序写write、顺序读read、随机写randwrite、随机读randread、混合随机读写randrw。

ioengine: 负载引擎。libaio引擎用于发起异步IO请求。

bs: IO块大小。

numjobs 测试线程数。

对比四个测试方法的参数我们可以看到,测试IOPS时我们采用小数据块(bs=4k),测试吞吐量时则用大数据块(bs=1024k)。这和我们前面说到的大货车小货车的选择原理是一致的。

队列深度对IOPS的影响要大于对吞吐量的影响,因为我们测试IOPS时选择的iodepth更大。但iodepth也不是越大越好,因为当装卸工人数量、装卸货物速度、仓库寻址时间一定之后,单位时间内所能处理的最大货物量也就确定了,即磁盘的能力确定了。一味增加队列深度,增加的只能是货物在队列里的等待时间,即平均IO响应时间。

我们可以通过查看装卸工人的忙碌程度来决定是否要增加队列深度。如果磁盘的busy%为100%,那就表示所有工人都在一刻不停歇的装卸货物了,已经不再有提升的空间,此时再增加队列深度或是数据量大小对测试结果都将是徒劳。反之,则表示磁盘压力尚未到极限,得出的数据不能代表磁盘性能最高水平。

磁盘压测时如果有其他业务逻辑在运行会怎样呢做性能测试的参数?这种情况就相当于有一部分货车装运的是业务逻辑的数据,而这些货车也会占用我们的队列和装卸工人,测试引擎将无法百分之百的使用全部队列和装卸工人,那么我们的测试结果将不能体现整个磁盘的能力。尤其是当业务逻辑所涉及的IO是同步(synchronous)请求的时候,对测试结果的影响将更大,因为同步IO就相当于前面说到的一次只让一辆车在路上跑,只有等它跑完才会发下一辆车。因此在压力测试的时候,我们需要将业务逻辑关闭的。

原文链接 关于做性能测试的参数和做性能测试的参数是什么的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。 做性能测试的参数的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于做性能测试的参数是什么、做性能测试的参数的信息别忘了在本站进行查找喔。
上一篇:闻库:推动5G行业网络部署,需降低部署成本促进应用落地
下一篇:it服务管理运维平台(全网it智能运维平台)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~