例子:一个高速路有10个入口,每个入口每秒钟只能进1辆车
-------------------------------------------------------------------------------
TPS,每秒钟完成的事务数
"80/20"原理:
"80/20"原理是按事情的"重要程度"编排行事优先次序的准则是建立在"重要的少数与琐碎的多数"原理的基础上。这个原理是十九世纪末期与二十世纪初期的意大利经济学家兼社会学家维弗烈度·柏瑞图所提出。它的大意是:在任何特定群体中,重要的因子通常只占少数,而不重要的因子则占多数,因此只要能控制具有重要性的少数因子即能控制全局。这个原理经过多年的演化,已变成当今管理学界所熟知的"80/20"原理--即百分之八十的价值是来自百分之二十的因子,其余的百分之二十的价值则来自百分之八十的因子.
下面举个实际的例子来看"80/20"原理的应用于性能测试需求分析。
去年全年处理业务约100万笔,其中,15%的业务处理中,每笔业务需对应用服务器提交7次请求;70%的业务处理中,每笔业务需对应用服务器提交5次请求;其余15%的业务处理中,每笔业务需对应用服务器提交3次请求。根据以往的统计结果,每年的业务增量为15%,考虑到今后3年业务发展的需要,测试需按现有业务量得两倍进行。
测试强度估算方法如下:
每年总的请求数为(100*15%*7+100*70%*5+100*15%*3)*2=1000万次/年
每天的请求数为1000/(8个月*20天)=6.25万次/天
每秒的请求数为(62500*80%)/(8小时*20%*3600秒)=8.68次/秒
即应用服务器处理请求的能力应达到9次/秒。
PS:下面是性能测试的主要概念和计算公式,记录下:
一.系统吞度量要素:
一个系统的吞度量(承压能力)与request对CPU的消耗、外部接口、IO等等紧密关联。
单个reqeust对CPU消耗越高,外部系统接口、IO影响速度越慢,系统吞吐能力越低,反之越高。
QPS(TPS):每秒钟request/事务数量
并发数:系统同时处理的request/事务数
(很多人经常会把并发数和TPS理解混淆)
理解了上面三个要素的意义之后,就能推算出它们之间的关系:
一个系统吞吐量通常由QPS(TPS)、并发数两个因素决定,每套系统这两个值都有一个相对极限值,在应用场景访问压力下,只要某一项达到系统最高值,系统的吞吐量就上不去了,如果压力继续增大,系统的吞吐量反而会下降,原因是系统超负荷工作,上下文切换、内存等等其它消耗导致系统性能下降。
我们做项目要排计划,可以多人同时并发做多项任务,也可以一个人或者多个人串行工作,始终会有一条关键路径,这条路径就是项目的工期。
关键路径是有CPU运算、IO、外部系统响应等等组成。
二.系统吞吐量评估:
我们在做系统设计的时候就需要考虑CPU运算、IO、外部系统响应因素造成的影响以及对系统性能的初步预估。
而通常境况下,我们面对需求,我们评估出来的出来QPS、并发数之外,还有另外一个维度:日PV。
通常的技术方法:
1.找出系统的最高TPS和日PV,这两个要素有相对比较稳定的关系(除了放假、季节性因素影响之外)
2.通过压力测试或者经验预估,得出最高TPS,然后跟进1的关系,计算出系统最高的日吞吐量。B2B中文和淘宝面对的客户群不一样,这两个客户群的网络行为不应用,他们之间的TPS和PV关系比例也不一样。A)淘宝
淘宝流量图:
淘宝的TPS和PV之间的关系通常为最高TPS:PV大约为1:11*3600(相当于按最高TPS访问11个小时,这个是商品详情的场景,不同的应用场景会有一些不同)
B)B2B中文站
B2B的TPS和PV之间的关系不同的系统不同的应用场景比例变化比较大,粗略估计在1:8个小时左右的关系(09年对offerdetail的流量分析数据)。旺铺和offerdetail这两个比例相差很大,可能是因为爬虫暂的比例较高的原因导致。
在淘宝环境下,假设我们压力测试出的TPS为100,那么这个系统的日吞吐量=100*11*3600=396万
这个是在简单(单一url)的情况下,有些页面,一个页面有多个request,系统的实际吞吐量还要小。
再次,站在开发(设计)人员角度去考虑。
1、架构设计是否合理2、数据库设计是否合理3、代码是否存在性能方面的问题4、系统中是否有不合理的内存使用方式5、系统中是否存在不合理的线程同步方式6、系统中是否存在不合理的资源竞争
二、软件性能的几个主要术语
2、并发用户数的计算公式
系统用户数:系统额定的用户数量,如一个OA系统,可能使用该系统的用户总数是5000个,那么这个数量,就是系统用户数。
平均并发用户数的计算:C=nL/T
并发用户数峰值计算:C^约等于C+3*根号C
其中C^是并发用户峰值,C是平均并发用户数,该公式遵循泊松分布理论。
3、吞吐量的计算公式
从业务角度看,吞吐量可以用:请求数/秒、页面数/秒、人数/天或处理业务数/小时等单位来衡量
从网络角度看,吞吐量可以用:字节/秒来衡量
对于交互式应用来说,吞吐量指标反映的是服务器承受的压力,他能够说明系统的负载能力
以不同方式表达的吞吐量可以说明不同层次的问题,例如,以字节数/秒方式可以表示数要受网络基础设施、服务器架构、应用服务器制约等方面的瓶颈;已请求数/秒的方式表示主要是受应用服务器和应用代码的制约体现出的瓶颈。
当没有遇到性能瓶颈的时候,吞吐量与虚拟用户数之间存在一定的联系,可以采用以下公式计算:F=VU*R/
4、性能计数器
资源利用率:指系统各种资源的使用情况,如cpu占用率为68%,内存占用率为55%,一般使用“资源实际使用/总的资源可用量”形成资源利用率。