性能测试知识点

1、性能测试(performance test)
性能测试的目的:评估系统的能力---测试中得到的负荷和响应时间数据可被用于验证所计划的模型的能力,并帮助做出决策。
识别体系中的弱点---受控的负荷被增加到一个极端水平,并突破它,从而修复体系的瓶颈或薄弱的地方
系统调优---重复运行测试,验证调整系统的活动得到了预期的结果,从而改进性能。检测软件中的问题,长时间的侧测试执行可导致测试执行可导致程序发生由于内存泄漏引起的失败,揭示程序中的隐含问题或冲突。
验证稳定性,可靠性--在一个生产负荷下执行测试一定的时间时评估系统稳定性和可靠性是否满足要求的唯一方法。

通常收集所有和测试有关的所有性能,通常被不同人在不同的场合下进行使用。测试软件在系统中的运行性能,度量系统与预定
义目标的差距。
2、负载测试(Load Test)
负载测试时一种性能测试,只数据在超负荷环境中运行,程序是否能够承担。通过逐步增加
系统负载,确定在满足性能指标的情况下,系统所能承受的最大负载量。(需求中不知道系统所能满足的用户数是多少,需要我们去寻找的)
3、压力测试(Stress Test)
压力测试是一种高负载测试,也就是说系统处于一个负载的情况下,再继续对它进行加压,形成双重负载,直到系统崩溃,并关注崩溃后系统的恢复能力,关注再加压的一个过程,
看看系统到底是否已经被彻底破坏掉了。

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

性能测试的执行过程是由轻到重,逐渐对系统施压。通常用户最关心的性能指标包括:响应时间、吞吐量。资源利用率和最大用户数

可以分为轻负载区域、重负载区域和负载失效区域

轻负载区域:随着虚拟用户数量的增加,系统资源利用率和吞吐量也随之增加,而响应时间没有特别明显的变化

重负载区域:随着虚拟用户数量的增加,系统资源利用率与随之缓慢增加,吞吐量开始也缓慢增加,随着虚拟用户数量的增长,资源利用率保持相对的稳定(满足系统资源利用率指标),
吞吐量也基本保持平稳,后续则略有降低,但幅度不大,响应时间会有相对较大幅度的增长。
负载失效区域:这个区域系统资源利用率随之增加并达到饱和,入CPU利用率达到95%甚至100%,并长时间保持该状态,而吞吐量急剧下降和响应时间大幅度增长(即:出现拐点)

两个交界点
在轻负载区域和重负载区域交界处的用户数,我们称为“最佳用户数”。而重负载区域和负载失效区域交界处的用户则称为“最大用户数”。
当系统的负载等于最佳用户数时,系统的整体效率最高,系统的资源利用率适中,用户请求能够得到快速响应;
当系统厨语最佳用户和最大用户数之间时,系统可以继续工作,但响应时间开始变长,系统资源利用率较高,并持续保持该状态,如果负载一致持续,将最终导致少量用户无法忍受而放弃;

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

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

并发与并行有很多细节上的差异。并发意味着两个或更多的任务取得进展,即使他们不是同时执行的。并行是真正意义上的同时操作某一个动作。

绝对并发用户数(服务器视角)
主要针对某一个操作进行测试,即多个用户同一时刻发起相同请求。

这里列一下操作系统的几个重要参数。
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攻击。
目前还在学习中,希望会对大家有所帮助,觉得不错,就点赞支持一下。 另外,转载时请附带链接。谢谢!
原文地址:https://www.cnblogs.com/dangkai/p/8919453.html