1、性能测试度量及其意义
- 性能度量
- 收集哪些度量
- 选择度量的方法
- 度量信息汇总
(1)性能度量
如果没有预先了解需要测量哪些指标,就不应进行性能测试,因为如果没有度量
- 无法识别趋势
- 没有数据对比
- 无法得到预期结果
- 测试失去目标
(2)收集哪些度量(选择度量的决定因素)
- 业务领域
- 运行环境
- 全链路(每个环节都需要模拟去测试)
- 第三方接口
(3)选择度量的方法-GQM
目标--问题--度量(GQM)方法是将度量与性能目标保持一致的有效方法
- 思路是首先确定目标,然后提出问题以确定目标何时实现
- 度量与每个问题相关联,以确保问题的答案是可测量的
- 在定义并捕获初始测量之后,可能需要进一步的测量和度量来理解真实的性能水平并确定可能需要采取纠正措施的位置
(4)度量信息的来源
- 负载工具
- 监控工具
- 日志文件
- 警告信息
2、性能关键指标刨析
- 吞吐量
- 并发用户数
- 点击数
- 响应时间
- 资源使用率
- 思考时间
(1)并发用户数
- 并发:用于从业务的角度模拟真实用户同时访问
- 并发数:同时访问系统的用户数
- 并发分为广义并发和严格并发
严格并发:多个用户进行秒杀
广义并发:多个用户同时进行不同的操作,比如有些在秒杀,有些在提交订单
比如同一个电脑可以启动多个jmeter 的,广义的并发建议使用多个jmeter效果会更好,用同一个jmeter设置多个线程组也是可以的,只是效果没那么好罢了
- 在C/S或B/S结构的应用,系统的性能主要由服务器决定,服务器在大量用户同时访问时,压力最大。
- 并发用户数计算公式
示例:一个OA系统,该系统有3000各用户,平均每天大约有400个用户访问该系统,对一个典型用户来说,一天只在8小时内使用该系统,且从登录到退出该系统的平均时间为4小时
C=nL/T =400*4/8 = 200
C^ = 200 +3*根号C
(2)吞吐量
- 吞吐量:是指软件系统在每单位时间内能处理多少个事务/请求/单位数据等的量
- 从业务角度看:吞吐量可以用请求数/秒、页面数/秒、人数/天或处理业务事/小时等单位来衡量
- 从网络角度看:吞吐量可以用字节/秒来衡量
- 对于交互式应用来说:吞吐量指标反映的是服务器承受的压力,他能够说明系统的负载能力
- TPS:每秒事务数
- 吞吐量计算公式:当没有遇到性能瓶颈的时候,吞吐量与虚拟用户数之间存在一定的联系,可以采用以下公式计算--->F=VU*R/T = 100*1/5 = 20
说明:F为吞吐量,VU表示虚拟用户个数,R表示每个虚拟用户发出的请求数,T表示性能测试所用的时间
- 点击数:点击数是衡量web服务器处理能力的一个很有用的指标
说明:点击数是客户端向服务器发起了多少次http请求计算的,一次鼠标可能触发多个http请求,这需要结合具体的web系统实现来计算
(3)响应时间
- 响应时间:用户感受软件系统为其服务所耗费的时间,是用户感知软件性能的主要指标
- 示例:对于网站系统来说,响应时间就是从点击了一个页面计时开始,到这个页面完全在浏览器里展现计时结束的这一段时间间隔
- 响应时间包括:1)用户客户端呈现时间;2)请求/响应数据网络传输时间;3)应用服务器处理时间;4)数据库系统处理时间
- 响应时间参考:对于一个web系统,普遍接受的响应时间标准为2/5/8秒
(4)资源使用率
- 性能计算器:是描述服务器或操作系统性能的一些数据指标
- 系统典型资源:1)内存;2)cpu;3)磁盘;4)网络等资源使用率等
二、思考
1、什么情况下面会导致一下情况发生?
- CPU消耗型:高并发(计算)、资源切换
- 内存消耗型:在线用户量
- 磁盘消耗型:
- 网络宽带消耗型:
2、丢包跟内存泄露有什么区别?
丢包是网络问题,是接口受到影响,数据就不完整了,内存泄露是操作系统的资源,一般内关系的
3、内存溢出和内存泄露有什么区别?
- 内存溢出是指程序在为自身申请内存时,没有足够的内存空间供自己使用,出现内存溢出;比如你为
程序申请了一个integer,但是只给它存了long才能存下的数,就是内存溢出。内存溢出就是你要求被分配的内存超出了系统能给你的内存,系统不能满足你的需求,于是产生溢出。(你占了别人的空间)
- 内存泄漏是指你向系统申请分配内存进行使用(new),可是使用完了以后却不归还(delete),结果你申
请到的那块内存你自己也不能再访问(也许你把它的地址给弄丢了),而系统也不能再次将它分配给需要的程序。一个盘子用尽各种方法只能装4个果子,你装了5个,结果掉倒地上不能吃了。这就是溢出!比方说栈,栈满时再做进栈必定产生空间溢出,叫上溢,栈空时再做退栈也产生空间溢出,称为下溢。就是分配的内存不足以放下数据项序列,称为内存溢出。
centos,可以用vmstat命令监控内存