服务化系统容量评估和性能保障

一、全面的非功能质量需求

1、非功能质量需求的指标概述

高性能:通常指单节点服务的吞吐量和响应时间
可用性
可伸缩性
可扩展性
安全性

可监控性
可测试性:QA测试,准生产测试,生产测试。服务需要在不同的阶段有相应的方法和途径来测试,不具备测试条件的系统使用Mock(虚拟对象来测试)方式来测试
鲁棒性:容错性,可恢复性
可维护性
可重用性
易用性

2、不同系统的非功能质量需求的具体指标

(1)应用服务器(服务的入口)

(2)数据库
根据应用层的访问量和访问峰值,计算出需要的数据库资源的吞吐量和每天的数据总量等,依据这个俩评估所需数据库资源的数量和配置、部署结构等
(3)缓存
(4)消息队列

3、典型的技术评审提纲

(1)现状
①业务背景
项目名称,业务描述,
②技术背景
架构描述,当前的系统容量,当前系统调用量的峰值、最小和最大的请求响应时间
(2)需求
业务需求:
①要改造的内容
②要实现的新需求
性能需求:
①预估系统容量
②预估系统调用量的峰值,最小和最大的请求响应时间
③其他非功能质量,例如:安全性、可伸缩性

(3)方案描述
详细说明:
中间件架构(应用服务器、数据库、缓存、消息队列等)
逻辑架构(模块划分、模块通信、信息流、时序等)
数据架构(数据结构、数据分布、拆分策略、缓存策略、读写分离策略、查询策略、数据一致性策略等)
异常处理、容灾策略、灰度发布、上线方案、回滚方案等

性能评估:
给出方案的基准数据,并按性能需求评估需要使用的资源数量
单机并发量
单机容量
单机吞吐量的峰值
按照预估的性能需求,预估资源数量、伸缩方式和功能

要量化列出方案的优缺点

(4)方案对比
对比选出倾向的方案,给出选择该方案的理由
(5)风险评估
提出各种风险出现时的应对策略,例如上线失败时的回滚策略
(6)工作量评估

4、性能和容量评估经典案例

5、性能测试方案的设计和最佳实践

1、明确压测目标
测试目标一定要有量化的标准
最核心的性能指标:响应时间和吞吐量
2、确定测试类型
基准测试:对单线程下的单接口测试,主要测试脚本正确性和每个请求的响应时间
容量测试:检查系统能处理的最大业务量,采用梯度加压的方式不断增加并发用户量,当响应时间曲线出现拐点时的业务量就是系统处理的最大业务量。
负载测试:测试单个接口在响应时间满足用户需求时的最大吞吐量和并发数,梯度加压,监控接口响应时间和状态,党出现系统开始超时或者出现错误时,便会出现系统性能指标的衰退点。
混合业务测试:按照业务流程的要求对接口调用按照比例进行编排,并采用一定的加压方式获取业务流程的最大处理能力
稳定性测试:按照混合测试的业务流程对系统施加合理的压力,并持续一段时间,针对系统的运行情况,判断系统是否健壮。经过一定时间的稳定性测试,可以发现系统程序内隐藏的具有时间累积效应性质的bug。一般在12~24小时完成,以上的测试一般在几十分钟完成
异常测试:服务中断,网络中断,硬件故障灯异常情形下,系统对业务的影响情况。

3、确定加压方式
(1)瞬间加压方式:考验系统对突发流量的处理能力,也考验系统是否设计了消峰功能和对瞬间大量负载的熔断、限流、隔离、失效转移、降级功能,主要应用于类似于秒杀、抢购、抢红包等场景中。
(2)逐渐加压
逐渐加压指模拟通用的线上系统的压力。最大限度地模拟这种负载压力的分布情况
(3)梯度加压
目的是通过逐渐增加用户并发量,并观察系统的输出能力,找到最佳或者最大的系统负载、吞吐量、响应时间和并发数。
对应的压力终止方式有两种:逐渐退出和立即同时退出。一般采用第二种,观察系统资源使用情况,资源应该迅速被释放。
4、确定延时方式
模拟系统真实负载,加压测试,其实就是在客户端机器上发送大量的请求到目标系统
(1)一个请求发送完毕,立即下个请求
(2)间隔固定时间,发送下个请求
(3)以一定时间间隔均衡地发送请求
第三种方式容易控制系统的吞吐量,建议采用第三种方式
通常cpu和内存利用率在70%以下比较合理。
5、准备压测环境
(1)压测环境的软硬件
应该与线上软硬件环境相同或者相似
(2)压测脚本
建议一个测试脚本包含一个单独的业务流程,便于统计性能结果以及在以后重用
(3)数据准备
确定数据集的大小
6、压测执行
监控系统资源、数据库、缓存和消息队列的使用情况。
形成最终的测试报告:
压测过程中记录的压测数据
分析是否满足既定的压测目标
指出系统存在的瓶颈点
指出系统存在的潜在风险
对系统的瓶颈点和潜在风险提出改进意见

7、问题修复和系统优化
对压测报告中的瓶颈点和风险进行整改并优化系统。修复后回归测试

6、有用的压测工具

(1)ab
针对http实现的服务进行性能压测的工具
只能测试简单的restful风格的接口,无法进行多个业务逻辑的串联测试
(2)jmeter
(3)mysqlslap
(4)sysbench
(5)dd:测试磁盘顺序I/O的存取速度
(6)LoadRunner:惠普,专业的性能和负载压测工具
(7)hprof

猜你喜欢

转载自blog.csdn.net/qq_38105384/article/details/89326652