初识性能测试:(一)性能测试基本概念

一、性能测试学习路线

loadrunner入门→jmeter→java基础→beanshell→架构知识→linux分析调优→各种中间件等定位调优。并发工具,jmeter是主流。

二、性能测试主要类型

性能测试主要包括:压力测试/强度测试、负载测试、并发测试、容量测试

1、压力测试/强度测试(Stress testing):在一定的软件、硬件及网络环境下,通过模拟大量的虚拟用户向服务器产生负载,使服务器的资源处于极限状态下长时间连续运行,以测试服务器在高负载情况下是否能够稳定工作。尤其关注大业务量情况下长时间运行系统性能的变化(例如是否反应变慢、是否会内存泄漏导致系统逐渐崩溃、是否能恢复);压力测试是测试系统的限制和故障恢复能力,它包括5种情况:
a.稳定性压力测试:在选定的压力值下,长时间持续运行。通过这类压力测试,可以考察各项性能指标是否在指定范围内,有无内存泄漏、有无功能性故障等;

b.破坏性压力测试(Spike testing):在稳定性压力测试中可能会出现一些问题,如系统性能明显降低,但很难暴露出其真实的原因。短时间的极端负载测试,通过破坏性不断加压的手段,往往能快速造成系统的崩溃或让问题明显的暴露出来。

c.Spike testing:短时间的极端负载测试

d.Extreme testing:在过量用户下的负载测试

e.Hammer testing:连续执行所有能做的操作

2、负载测试(Load testing):在一定的软件、硬件及网络环境下,通过运行一种或多种业务在不同虚拟用户数量情况下,测试服务器的性能指标是否在用户的要求范围内,用于确定系统所能承载的最大用户数、以及不同用户数下的系统响应时间及服务器的资源利用率。负载测试的目标是测试在一定负载情况下系统性能(不关注稳定性,也就是说不关注长时间运行,只是得到不同负载下相关性能指标即可)。实际中我们常从比较小的负载开始,逐渐增加模拟用户的数量(增加负载), 观察不同负载下应用程序响应时间、所耗资源,直到超时或关键资源耗尽,这就是所说的负载测试,它是测试系统的不同负载情况下的性能指标。

3、并发测试(Concurrency testing):主要指当测试多用户并发访问同一个应用、模块、数据时是否产生隐藏的并发问题,如内存泄漏、线程锁、资源争用问题,几乎所有的性能测试都会涉及并发测试。

4、容量测试(Volume testing):容量测试的目的是通过测试预先分析出反映软件系统应用特征的某项指标的极限值(如最大并发用户数、数据库记录数等),系统在其极限状态下没有出现任何软件故障或还能保持主要功能正常运行。容量测试还将确定测试对象在给定时间内能够持续处理的最大负载或工作量。容量还可以看作系统性能指标中一个特定环境下的一个特定性能指标,即设定的界限或极限值。

对于性能测试,我们必须要清晰地理解这些概念。执行性能测试,性能瓶颈分析路径:服务器硬件瓶颈-->网络瓶颈(对局域网,可以不考虑)-->服务器操作系统瓶颈(参数配置)-->中间件瓶颈(参数配置,数据库,web服务器等)-->应用瓶颈(SQL语句、数据库设计、业务逻辑、算法等)

三、性能测试主要指标

性能测试是通过测试工具模拟多种正常、峰值及异常负载条件来对系统的各项性能指标进行测试。

目的:验证软件系统是否能够达到用户提出的性能指标,发现系统中存在的性能瓶颈并加以优化。

性能指标分为两个方面:

系统指标(与用户场景和需求相关指标)

资源指标(与硬件资源消耗相关指标)

系统指标说明

1.响应时间、平均响应时间

一个请求做出响应所需要的时间

响应时间=网络响应时间+应用程序响应时间=(N1+N2+N3+N4)+(A1+A2+A3)

平均响应时间:所有请求花费的平均时间

例如:如果有100个请求,其中 98 个耗时为 1ms,其他两个为 100ms

平均响应时间: (98 * 1 + 2 * 100) / 100.0 = 2.98ms,但是,2.98ms并不能反映服务器的整体效率,因为98个请求耗时才1ms,引申出百分位数

百分位数:以响应时间为例,指的是 99% 的请求响应时间,都处在这个值以下,更能体现整体效率。

2.并发用户数

并发主要是针对服务器而言,在同一时刻与服务器进行交互(指向服务器发出请求)的在线用户数。

在线用户:指某段时间内,用户访问系统的用户数,如多个用户在浏览网页,但没有对同时对服务器进行数据请求,需要与并发用户数区分开。

并发用户数C,计算公式C=nL/T

n:每天访问系统的用户数

L:在线用户从登陆到退出的时间

T:用户每天使用系统大概多长时间

峰值C1,即最大并发数,计算公式C1=C+³√C

注:理解最佳并发用户数和最大并发用户数

看了《LoadRunner没有告诉你的》之理发店模式,对最佳并发用户数和最大的并发用户数的理解小小整理了一下。

所谓的理发店模式,简单地阐述一下,一个理发店有3个理发师,当同时来理发店的客户有3个的时候,那么理发师的资源能够有效地利用,这时3个用户数即为最佳的并发用户数;当理发店来了9个客户的时候,3个客户理发,而6个用户在等待,3个客户的等待时间为1个小时,另外的3个客户的等待时间为2小时,客户的最大忍受时间为3小时包括理发的1个小时,所以6个客户的等待时间都在客户的可以承受范围内,故9个客户是该理发店的最大并发用户数。具体的随着并发用户数的增加,响应时间,吞吐量,资源利用情况如下图所示:

Light Load(较轻压力)-->最佳用户数(资源利用最高)-->Heavy Load(较重压力)-->系统可以持续工作,但用户等待时间较长,满意度会下降-->最大并发用户数-->Buckle Zone-->(用户无法忍受而放弃请求)

最佳并发用户数:当系统的负载等于最佳并发用户数时,系统的整体效率最高,没有资源被浪费,用户也不需要等待
最大并发用户数:系统的负载一直持续,有些用户在处理而有的用户在自己最大的等待时间内等待的时候

我们需要保证的是:

(1)最佳并发用户数需大于系统的平均负载

(2)系统的最大并发用户数要大于系统需要承受的峰值负载

怎么理解这两句话呢?

(1)系统的平均负载:在特定的时间内,系统正在处理的用户数和等待处理的用户数的总和

如果系统的平均负载大于最佳并发用户数,则用户的满意度会下降,所以我们需要保证系统的平均负载小于或者等于最佳并发用户数

(2)峰值:指的是系统的最大能承受的用户数的极值

只有最大并发用户数的大于系统所能承受的峰值负载,才不会造成等待空间资源的浪费,导致系统的效率低下

3.吞吐量、吞吐率

衡量网络性能的重要指标

吞吐量:网络传输的数据量(处理客户的请求数)

吞吐率:单位时间(可以是秒/分/时/天)内网络成功传输的数据量,如请求数/秒、页面数/秒

4.事务,TPS(Transaction Per Second)每秒事务数

事务:可以看作是一个动作或是一系列动作的集合,例如登录,从登录开始到登录结束为一个事务。

TPS:衡量系统处理事务或交易的能力,即服务器对客户请求的能力,每秒处理的事务数,一般在LoadRunner上使用,设置事务,然后统计单位时间内系统可以成功完成多少个定义的事务。

5.QPS(Queries Per Second)每秒查询率,是一台服务器每秒能够响应的查询次数,是对一个特定的查询服务器(比如是读写分离的架构,就是读的服务器)在规定时间内所处理流量多少的衡量标准。注意:TPS和QPS的区别。

6.点击量、点击率(Hits Per Second)

点击数:指Web Server收到的HTTP请求数。

点击率:单位时间每秒用户向Web Server提交的HTTP请求数。

区分鼠标点击数:如请求一个网页,网页含有3张图片,向Web Server请求的点击数:1+3=4,而鼠标的一次点击就可以访问网页,点击数只有1次

资源指标说明

1.硬件性能指标:CPU,内存Memory,磁盘I/O(Disk I/O),网络I/O(Network I/O)

CPU:主要解释计算机指令以及处理计算机软件中的数据

Linux系统中top命令查看CPU的使用率

CPU的利用率(<=75%)有:user(用户使用),sys(系统调用<=30%),wait(等待<=5%),idle(空闲)

当user消耗高时,通过top命令查看哪个用户进程占用cpu的使用

user消耗过高的原因可能有:

(1)代码问题。如代码中耗时循环中不加sleep,即例如while的死循环中,没有加sleep时间,导致没有空余的时间将cpu的控制权给其他的进程,一直陷入该死循环中,cpu得不到休息,所以usr的消耗过高,则cpu的消耗高

(2)gc频繁。gc则为垃圾回收,由于垃圾回收也是需要大量的计算,也消耗cpu,所以当gc频繁时也导致usr用户空间的消耗也过高,cpu消耗过高

当sys消耗高时,通过top命令查看系统调用资源的情况

sys消耗过高的原因可能有:
(1)上下文切换频繁。上下文切换发生的情况有:中断处理,多任务处理,用户状态改变。

中断处理,当cpu停止处理当前的进程转而处理中断请求的进程时发生上下文切换。多任务处理则为有多个进程请求cpu的处理,进程的数量多于cpu的核数,则分配进程时间片,根据时间片处理进程,意味着会强制停止一个进程而去处理另一个进程,形成频繁的上下文切换。用户状态改变则为user状态与sys状态的改变。

wait较高时,即等待的进程占比高:

可以考虑是否磁盘读写,磁盘瓶颈问题, 等待的进程较多时,cpu无论如何切换都是切换到等待的进程,导致cpu一直在频繁切换等待的线程而利用率较低

内存:与cpu沟通的桥梁,计算机中所有程序的运行都在内存中进行,内存分为物理内存、页面交换(Paging),SWAP内存(虚拟内存)

页面交换:当物理内存即实际的内存满了的时候,将物理内存中不常用的进程调出存储到虚拟内存中,以缓解物理内存空间的压力,所以当物理内存与虚拟内存的数据交换频繁的时候,这时候就要关注下内存的性能情况。

SWAP内存:为进程分配虚拟的内存空间,即调用硬盘的空间作为内存使用。

内存的性能分析是又可用内存与页面交换来分析的,可用内存使用占70%-80%为上限,当超出这个数值,内存性能情况就比较危险,而且即使可用内存使用不超过80%的数值时,页面交换比较频繁时,也是要关注下内存情况。

一般物理内存即使是满内存也不能代表内存出现问题,主要是看虚拟内存swap,虚拟内存应该<=70%,大于则可以考虑是否内存问题或者内存泄漏

磁盘吞吐量,指单位时间内通过磁盘的数据量。主要关注磁盘的繁忙率,如果高于70%,则磁盘瓶颈

网络吞吐量,指单位时间内通过网络的数据量,当吞吐量大于网路设备或链路最大传输能力,即带宽时,则应该考虑升级网络设备或者增加带宽,Linux命令netstate

网络IO也有可能出现终止连接失败。例如当服务端出现大量的TIME_WAIT,见以下TCP终止连接的第4个步骤,在主动发起关闭连接方接收到结束符FIN时状态变为TIME_WAIT,这时在服务端发现大量的TIME_WAIT,意味着关闭连接是由服务端发起的。

问:什么情况是由服务端发起关闭连接?答:在用户端的应用程序忘记关闭连接

另外如果在服务端发现大量状态CLOSE_WAIT,则说明第二次关闭回不去,也就是TCP关闭连接的第三个步骤没有执行,停留在CLOSE_WAIT的状态,浏览器如果这时发起请求则会返回超时连接,因为服务端这边一直无法进行第二次关闭,将结束符返回去给用户端。
注:科普TCP建立连接的三次握手,终止连接的四次握手

参考:https://blog.csdn.net/WluoW/article/details/90743735https://blog.csdn.net/guyuealian/article/details/52535294https://www.cnblogs.com/huhuuu/p/3572485.html

2.中间件:常用的中间件例如web服务器Tomcat,Weblogic web服务器,JVM(java虚拟机),ThreadPool线程池,JDBC数据驱动

注:http服务器和web服务器与应用服务器的差别是一个存储静态网页的服务器,一个是存储css,js等动态加载网页的服务器,而tomcat则属于应用服务器

注:对中间件例如对服务器的性能测试,需要将监控的jmeter-server的文件下载在服务端上,然后开启即可监控被测服务器的性能,或者将监控的软件下载在被测服务器上,远程启动监控软件等

3.数据库指标

应关注SQL,吞吐量,缓存命中率,连接数等,则是关注sql语句执行时间,以微妙为单位,吞吐量TPS,缓存命中率应>=95%

注:对数据库的性能测试通过jemter利用批量的sql语句对数据库进行操作,从而测试数据库的性能,前提是需要将jdbc的驱动加载在测试计划添加的驱动文件中,然后添加jdbc的前置处理器和jdbc的请求sample。

4.JVM:java虚拟机,为使java的代码可以编译运行在不同的平台上顺畅,仿真模拟各种计算机来实现

GC:自动内存管理程序,被引用的对象保存在内存中,当对象不被引用时则释放。关注的参数有Full GC完全java虚拟机垃圾部分回收频率

5.前端指标

前端应该关注页面展示,即首次显示时间,页面数量,页面大小,网络startRender,firstRender等

注:关注前端的性能与后端的性能的不同点在于,前端是每个用户的直观的感受,以及前端页面的加载元素耗费时间给予用户的感受,而后端的性能关注点在于多用户使用系统时,服务器是否能够承受或者服务器的处理能力如何,能否以较好的响应时间响应。

6.Load Average:系统平均负载,特定时间间隔内运行进程数,Load与CPU核数一致

原文地址:https://www.cnblogs.com/Kevin6317/p/12495624.html

时间: 2024-10-12 00:35:03

初识性能测试:(一)性能测试基本概念的相关文章

什么是性能测试、性能测试目的?

什么是性能测试? 性能测试是指被测系统,在一定的负载下运行,监控系统的各项指标,是否符合需求(指标,指的CPU,内存,事务响应时间,等)如果不符合,就发现了系统的性能瓶颈 性能测试的目的? 识别系统的弱点,评估系统能力,发现系统性能瓶颈,提高系统可靠性能和稳定性 性能测试运用的领域? 金融.银行,通讯,医疗,证券,搜索引擎(百度)等多用户的系统 性能测试的工具LoadRunner的组成? Virtual user Generator 虚拟用户生成器,根据一定的网络协议,记录客户端(IE,Java

性能测试day01_性能基本概念

其实第一次接触性能是15年的时候,懵懵懂懂的被领导拉去做第一次做性能压测,如今有机会重新听一下云层大大讲解性能,于是打算以此博客记录下整个学习的过程,如若有不同意见者可以在下面留言指出,也欢迎大家一起来探讨性能测试. 进入今天的主题,今天的主要目的就是构建整体的思想,那么第一个问题来了,什么是性能测试?简单的来讲是不是就是性价比测试(这个本质上来讲是不是就是对比单位价格内的处理能力),性价比准确的来讲又是软硬件的投入对TPS的影响. 请看下图的一个思路过程: 什么是性能问题?时间性价比的问题,具

性能测试一些相关的概念

1.压测任务需求的确认 确定好工作范围:首先分析压测最容易出现瓶颈的地方,有目的的进行测试.用户更关心整个系统中哪个环节的性能情况也会影响工作范围. 2.概念 压力测试 通过不断加压被测系统,直到性能指标达到饱和,这种测试能够找到系统的极限,为系统调优提供数据性能测试 通过模拟生产运行的业务压力量和使用场景组合测试系统的性能是否满足生产性能要求配置测试 通过测试找到系统各资源的最优分配原则并发测试 测试多个用户同时访问一个应用,同一个模块或者数据是否存在死锁或者其他性能问题 # 数据库死锁:多个

关于性能测试几个名词概念的说明

什么是性能测试 在一定的负载下,系统的响应时间等特性是否复合性能要求,从某些角度来说,其实是功能测试的一种 负载测试 在一定的软硬件条件.网络条件下,运行一种或多种业务,不同数量的虚拟用户访问系统,不断加压,直到超出系统预定的指标或部分资源达到饱和,不能加压为止.打个比喻就是在保证不翻船的情况下,测试最大用户数 压力测试 一定条件下,不断加大虚拟用户量,对系统加压,查看系统是否可以正常工作.打个比喻就是,测试翻船时候的最大人数 容量测试 一定条件下,对数据库制造不同的数据,在一定的虚拟用户下,确

性能测试的几个概念区分

随着单位时间流量的不断增长,被测系统的压力不断增大,服务器资源会不断被消耗,TPS值会因为这些因素而发生变化,而且符合通常情况下的规律.以下是一个性能测试压力变化模型图: 说明: a点:性能期望值 b点:高于期望,系统资源处于临界点 c点:高于期望,性能处于拐点 d点:超过负载,资源不够用,系统处于崩溃 通过如上模型图中的情况,我们大致可以将当前性能测试分成如下4类: 1.性能测试 2.负载测试 3.压力测试 4.稳定性测试 >性能测试 以上模型图为准则,在a点与b点之间的系统性能,表示以性能目

性能测试基础---性能测试基础指南2

·计算机操作系统: ·计算机由硬件和软件构成: ·硬件:CPU.内存.磁盘和网卡 CPU:是计算机的大脑,决定了计算机的处理速度. 一般来说,CPU处理任务是采取的串行方式--时间片轮转机制. 内存:是运行时存储,计算机在进行任务处理的时候,是需要有内存的. 磁盘:是永久存储,一般我们需要持久化的数据都会存储在磁盘中. 和实际测试牵涉比较多的是数据库和静态文件的读写. 网卡:决定了传输速度. ·软件: ·操作系统及系统软件: 通过操作系统,其它软件才能够去操作硬件. 一般来说,不论是window

性能测试-5.性能测试理论知识2.0

性能测试定义: 在一定负载的情况下,被测系统的响应时间.吞吐率.资源利用率是否满足性能需求 性能测试评估指标: 响应时间:响应时间是从开始到完成某项工作所需时间的度量.通常是从客户方测量响应时间,响应时间通常随负载的增加而增加. 吞吐量:随着负载的增加,吞吐量往往增长到一个峰值后,然后下降,队列变长,比如客户/服务器这样的端到端系统中,吞吐量依赖于每个部件的运行.系统中最慢的点决定了整个系统的吞吐率. 吞吐率:通常用来指单位时间内网络上传输的数据量,也可以指单位时间内处理的客户端请求数量.是衡量

性能测试基础---性能测试基础指南

·企业对于性能测试工程师的要求: ·要求熟练掌握至少一种性能测试工具,并且能够实现性能测试脚本的开发. ·能够获取.分析.提炼性能需求. ·能够根据性能需求去进行测试场景的设计和实现. ·能够根据性能的需要进行必要的监控. ·能够根据性能测试结果.集合监控.服务器日志等数据分析.定位性能瓶颈 ·能够提出调优建议. ·能够根据需要编写合格的性能测试报告. ·具备良好的沟通表达能力.团队合作能力. ·掌握一些其他必要的工具. ·性能测试工程师所面临的挑战 ·资源问题 人力 物力 ·知识面问题: 广度

初识openstack之3——opsenstack概念及实验环境介绍

前言 本系列文档按照openstack官方queens版本安装文档进行讲解,目的是通过搭建一个测试环境的openstack对其有更深入的了解. 一.openstack概念 openstack可以理解为一个云操作系统,他是将底层的物理资源抽象成一个资源池,而其上运行着每一个虚拟机(也成为实例)不需要关心自己具体在哪一个物理主机上,openstack根据其类型可以分为IaaS.PaaS.SaaS,下图是openstack的3种类型与传统架构的比较用图: 在传统架构中企业上线一套应用,从底层的硬件.网