性能测试基本理解

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

性能测试基本理解
性能测试基本了解
什么是性能测试
通过模拟⽣产环境运⾏的业务压⼒量和使⽤场景组合,测试系统的性能是否满⾜⽣产性能要求。

性能测试应⽤的四个领域
1. 能⼒验证:关注在给定的软硬件条件下,系统能否具有预期的能⼒表现,例如,在要求平均响应时间⼩于2秒的前提下,如何判断系统
是否能够⽀持50万⽤户/天的访问量?
2. 规划能⼒:关注如何使系统具有我们要求的性能能⼒,例如,某某系统计划在⼀年内获客量在到xxx万,系统到时候是否能⽀持这么多
⽤户量?如果不能需要如何调整系统的配置?
3. 性能调优:主要⽤于对系统性能进⾏调优,例如,某某系统上线运⾏⼀段时间后响应速度越来越慢,此时应该如何办?
4. 缺陷发现:发现缺陷或问题重现、定位⼿段,例如,某些缺陷只有在⾼负载的情况下才能暴露出来,如线程锁、资源竞争或内存泄
露。

性能测试类型
我们在做性能测试的时候⼀般都是笼统的称为性能测试,其实性能测试分为多个类型:负载测试,压⼒测试,性能测试,基准测试,并发测试,配置测试,稳定性测试,失效恢复测试。

下⾯就详细说说这些名词之间的区别和特点。

负载测试
负载测试是对被测系统不断增加压⼒(即⽤户并发数),直⾄性能指标超过预期或者某项资源使⽤达到饱和状态(就是加压到系统崩溃)。

重点观察系统正常运⾏的最⼤值时候的⼀些数据和资源使⽤。

观察程序、⽹络、服务器、还是数据库等哪个⽅⾯存在瓶颈。

⽬的:发现系统处理能⼒的极限。

找出问题所在,做这个就是为了发现系统是否还有隐藏的能⼒。

⽤来改进调优。

压⼒测试
压⼒测试是系统在⼀定饱和状态下,例如cpu、内存、磁盘I/O在饱和使⽤情况下,系统能够处理能⼒,以及系统是否会出现错误。

(可以参考负载测试情况)
⽬的:该⽅法通过增加压⼒,使系统资源使⽤保持在较⾼的压⼒下,检验此时应⽤的表现,重点在于有误出错信息产⽣,系统对应⽤的响应时间等。

性能测试
性能测试⼀般是根据模拟⽣产运⾏的业务压⼒量和使⽤场景组合,测试系统的性能是否满⾜⽣产性能要求。

也可以说是在特定的运⾏条件下验证系统的能⼒状态。

⽐如做100个并发,持续10分钟等。

查看平均响应时间和TPS是否满⾜⽣产的指标或者是设计的指标。

评估正常使⽤的功能。

不是破坏性的。

⽬的:验证系统是否达到了设计要求和是否可以满⾜需求。

需要将环境确认不变更。

做之前需要了解业务流程,最重要是做之前先确定好⽬标即指标要求。

基准测试
基准测试常⽤于敏捷开发中,通过每次迭代性能变化判断是否达到预期⽬标。

⽬的:直观反映每次迭代的性能变化,可作为验收测试的⼀部分。

并发测试
并发测试是模拟多⽤户并发访问同⼀个应⽤、模块或者数据记录时可能发⽣的性能问题(如内存泄漏、线程锁和资源争⽤⽅⾯的问题)。

配置测试
配置测试是通过对被测系统软硬件环境的调整,了解各种不同环境对系统性能影响的程度,从⽽找到系统各项资源的最优分配原则。

(tomcat配置、apache配置、Nginx配置、连接池配置、JVM配置等)
⽬的:了解各种不同因素对系统系能影响的程度,从⽽判断出最值得进⾏的调优操作。

稳定性测试
稳定性测试是在给系统施加⼀定压⼒,持续运⾏⼀段时间(7*24),观察系统能否稳定运⾏。

(也可以说是长时间的压⼒测试)
失效恢复测试
稳定性测试是如果系统发⽣故障,系统能否继续使⽤。

⽬的:测试系统的容错能⼒以及故障恢复能⼒(⼀般使⽤负载均衡、限流降级等技术)。

测试⼯具选择
1. 压测⼯具使⽤频率最⾼的就是jmeter、PerformanceRunner、LR,这三个⼯具的原理基本⼀致,都是基于协议,使⽤多线程去模拟并
发⽤户,设计场景。

2. 资源监控⼯具:nmon、
常⽤的性能指标
性能测试主要是通过⾃动化的测试⼯具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进⾏测试;不同⼈群关注的性能指标各有侧重。

从应⽤层看⼀般只关⼼吞吐量、响应时间等外部指标。

后台服务的所有者不仅仅关注外部指标,还会关注CPU、内存、服务器负载、⽹络、磁盘IO等内部指标。

应⽤层:
类型指标解释
应⽤层
TPS(transaction per
second)
TPS表⽰服务器每秒处理的事务数,他是
衡量系统处理能⼒的⼀个⾮常重要的指
标,在性能测试中,通过检测不同⽤户的
TPS,可以估算出系统处理能⼒的拐点。

RPS(Request Per
Second)每秒请求数
QPS(Queries Per Second)
是每秒查询率,是⼀台服务器每秒能够相
应的查询次数,即1秒内完成的请求数量,
是对⼀个特定的查询服务器在规定时间内
所处理流量多少的衡量标准
HPS(Hit Per Second)
点击率,每秒点击数,⼀般在性能测试
中,⽤来描述HTTP Request,它代表每秒
发送的HTTP请求数量,和RPS概念完全
⼀样
RT(Response-time)
响应时间是⼀个系统最重要的指标之⼀,
它的数值⼤⼩直接反应了系统的快慢。


应时间是指执⾏⼀个请求从开始到最后收
到响应数据所花费的总体时间,即从客户端
发起请求到收到服务器响应结果的时间ERROR⼀批请求中结果出错的请求所占⽐例
服务层:
类型指标解释
Load Average
在⼀段时间内的平均负载,系统⼯具top、
uptime等提供1分钟、5分钟和15分钟的平
均负载值。

us⽤户态使⽤的cpu时间百分⽐
sy系统态使⽤的cpu时间百分⽐
服务层CPU
sy系统态使⽤的cpu时间百分⽐
ni⽤做nice加权的进程分配的⽤户态cpu时
间百分⽐
id空闲的cpu时间百分⽐
wa cpu等待IO完成时间百分⽐
hi硬中断消耗时间百分⽐
si软中断消耗时间百分⽐
内存
VIRT
进程所使⽤的虚拟内存的总数。

它包括所
有的代码,数据和共享库,加上已换出的
页⾯,所有已申请的总内存空间
RES
进程正在使⽤的没有交换的物理内存
(栈、堆),申请内存后该内存段已被重
新赋值
SHR
进程使⽤共享内存的总数。

该数值只是反
映可能与其它进程共享的内存,不代表这
段内存当前正被其他进程使⽤
SWAP
进程使⽤的虚拟内存中被换出的⼤⼩,交
换的是已经申请,但没有使⽤的空间,包
括(栈、堆、共享内存)
DATA进程除可执⾏代码以外的物理内存总量,
即进程栈、堆申请的总空间磁盘IO
tps
该设备每秒的传输次数。

“⼀次传输”意思
是“⼀次I/O请求”。

多个逻辑请求可能会被
合并为“⼀次I/O请求”。

kB_read/s每秒从设备(driveexpressed)读取的数
据量,单位为Kilobytes
kB_wrtn/s每秒向设备(driveexpressed)写⼊的数
据量,单位为Kilobytes
kB_read/s读取的总数据量,单位为Kilobytes
kB_wrtn/s写⼊的总数量数据量,单位为Kilobytes
iops每秒处理读/写请求的数量
⽹络
r(t)xpck/s发包接包率
r(t)xKB/s发送接包⼤⼩
r(t)xdrop/s接收发送丢包率
性能测试准⼊标准
不同的指标⾏业参考标准
应⽤层:
类型指标⾏业参考标准
应⽤层
TPS(transaction per
second)
⽆论TPS、QPS、HPS,此指标是衡量系统
处理能⼒⾮常重要的指标,越⼤越好,根据
经验,⼀般情况下:
⾦融⾏业:1000TPS~50000TPS,不包括互
联⽹化的活动
保险⾏业:100TPS~100000TPS,不包括互
联⽹化的活动
制造⾏业:10TPS~5000TPS
互联⽹电⼦商务:10000TPS~1000000TPS
互联⽹中型⽹站:1000TPS~50000TPS
互联⽹⼩型⽹站: 500TPS~10000TPS
RPS(Request Per
Second)
QPS(Queries Per
Second)
HPS(Hit Per Second)
RT(Response-time)
ERROR
服务层:
类型指标⾏业参考标准
Load Average
压⼒测试时系统负载应接近但不能超过阈
值,并发测试时的系统负载最⾼不能超过阈
值的80%,稳定性测试时,系统负载应在阈
值的50%左右
us
CPU 利⽤率要低于业界警戒值范围之内,即sy
服务层CPU
sy
CPU 利⽤率要低于业界警戒值范围之内,即
⼩于或者等于75%;
CPU sys%⼩于或者等于30%;
CPU wait%⼩于或者等于5%;
ni
id
wa
hi
si
内存
VIRT现在的操作系统为了最⼤利⽤内存,在内存
中存放了缓存,因此内存利⽤率100%并不代
表内存有瓶颈,衡量系统内存是否有瓶颈主
要靠SWAP(与虚拟内存交换)交换空间利
⽤率,⼀般情况下,SWAP交换空间利⽤率
要低于70%,太多的交换将会引起系统性能低
下。

RES
SHR
SWAP
DATA
磁盘IO
tps
磁盘指标主要有每秒读写多少兆,磁盘繁忙
率,磁盘队列数,平均服务时间,平均等待
时间,空间利⽤率。

其中磁盘繁忙率是直接
反映磁盘是否有瓶颈的的重要依据,⼀般情
况下,磁盘繁忙率要低于70%。

kB_read/s
kB_wrtn/s
kB_read/s
kB_wrtn/s
iops
⽹络
r(t)xpck/s⽹络吞吐量指标主要有每秒有多少兆流量进
出,⼀般情况下不能超过设备或链路最⼤传
输能⼒的70%。

r(t)xKB/s
r(t)xdrop/s
瓶颈征兆
1. 内存瓶颈征兆
buff/cache增长过快
Physical Memory(物理内存)使⽤率过⾼GC过快,内存溢出
1. IO瓶颈
IO队列过长
IO处理时间过长
IO吞吐量过低
await与svctm差值过⼤
1. cpu瓶颈
负载过⾼
(sys+usr)利⽤率超过80%或者低于50% Iowait过⾼
运⾏队列过长
上下⽂切换过快,中断过快
1. ⽹络瓶颈
丢包,延迟过⾼
mtu值过⼩。

相关文档
最新文档