网站性能测试PV到TPS的转换以及TPS的波动

《淘宝性能测试白皮书V0.3》

http://wenku.baidu.com/view/924afe2d2af90242a895e541.html

 

 

性能测试的难点不在于测,在于测出的数据和实际的对照关系,以及测试出来的数据对性能的评估(到底是好,还是不好)。

 

淘宝性能测试白皮书,解决了我的4个问题:1、PV到TPS的转换关系。2、TPS的波动标准。3、压力变化以及测试类型。4、网页测试的标准(可惜很多数据都抹掉了)

 

1、PV到TPS的转换

    日PV对于一个网站,很容易就统计出来,但是LoadRunner性能测试时,只有TPS可供参考。日PV和TPS之间如何对应?公式就是80%的日PV,发生在T小时内。则公式为:

    TPS =  日PV * 80% / 24 * 60 * 60 * (T/24)

    定义 R = 1万 * 80% / 24 * 60 * 60 * (T/24)  = 10000 * 24 * 0.8 / 24 * 3600 * T = 2.2222/T

    TPS = 日PV(万) * R 这里的TPS就是平均的TPS。

    可以T的值代入,则求出R的值即可

    T      6             8             10            12

    R      0.3704    0.2778    0.2222     0.1852

10w     3.704      2.778      2.222       1.852

100w   37.04      27.78      22.22       18.52

1000w 370.4      277.8      222.2       185.2

1亿       3704       2778       2222        1852

关于TPS 我再多说两句,单就静态页面,TPS大概能到1W+,简单数据库操作大概2K+的样子,用Cache大概能到5K+。

 

    峰值的TPS,可以从图中看出来。

 

2、TPS的波动标准

TPS应该是一个比较平稳的曲线,而不是上下波动

TPS波动范围 = TPS标准差/TPS平均值 * 100%

在5%内算是正常的

 

3、测试压力变化

pdf中的图1-8
a点:性能期望值
b点:高于期望,系统资源处于临界点
c点:高于期望,拐点
d点:超过负载,系统崩溃

 

性能测试
a点到b点之间的系统性能
定义:狭义的性能测试,是指以性能预期目标为前提,对系统不断施加压力,验证系统在资源可接受范围内,是否能达到性能预期。

 

负载测试
b点的系统性能
定义:狭义的负载测试,是指对系统不断地增加压力或增加一定压力下的持续时间,直到系统的某项或多项性能指标达到极限,例如某种资源已经达到饱和状态等。

压力测试
b点到d点之间
定义:狭义的压力测试,是指超过安全负载的情况下,对系统不断施加压力,是通过确定一个系统的瓶颈或不能接收用户请求的性能点,来获得系统能提供的最大服务级别的测试。


稳定性测试
a点到b点之间
定义:狭义的稳定性测试,是指被测试系统在特定硬件、软件、网络环境条件下,给系统加载一定业务压力,使系统运行一段较长时间,以此检测系统是否稳定,一般稳定性测试时间为n*12小时。

 

 

4、网站测试标准

 

 

 

==========================================================================

性能相关的系列文章:

LoadRunner利用ODBC编写MySql脚本
LoadRunner压力测试时监控服务器Linux的资源情况
压力测试衡量CPU的三个指标:CPU Utilization、Load Average和Context Switch Rate
高性能服务器架构(High-Performance Server Architecture)
网站性能测试PV到TPS的转换以及TPS的波动
用GTmetrix来优化你的网页(集成了YSlow、FireBug的功能)

 

Q&A

 

因为CSDN评论不知道为什么没法用了,所以贴在这里吧

 

Q:yxt168118 能否请作者将TPS的T,在测试脚本中,怎么定义说明一下?我是将某个关键操作定义为一个事务(T),这样测试出来的TPS很难达到10。

 

A:回复 yxt168118:定义T transaction 事务,是根据测试目的来决定的,如果是性能测试,T定义为一次请求,如果是可用性测试,T定义为整个页面的加载,主要看响应时间用户是否能接受。TPS高低和操作的复杂程度、以及后台扩展、以及T的定义是相关的。一般,单次的请求,单台机器,百数量级上是正常的。另外,在一次请求中,不要每次都去初始化一些比如用户等数据,如果有很多的数据库操作,TPS也会低一些,如果达不到10,还需要优化,比如看看数据库方面是否有优化的空间,比如索引。

你可能感兴趣的:(2.软件设计/架构/测试)