1、淘宝性能测试白皮书 V10序言二零零九,岁在己丑,秋末冬初,会于产品研发之测试,修性能书也,群贤 毕至,少长咸集。此地有系统框架,API 接口;又有 Web 应用,无线性能,分 布式各大中心,列坐其次。虽无丝竹管弦之盛,一书一典,亦足以畅叙幽情。是日也,天朗气清,惠风和畅。仰观系统之大,俯察测试之盛。所以游目骋 怀,足以极性能之娱,信可乐也。测试之相与,俯仰淘宝,或接口功能,测试一室之内;或安全性能,放浪形 骸之外。虽用例万殊,方法不同,当其欣于所遇,暂得于己,怏然自足,曾不知 新人倍增;及其所之未知,能力各异,感慨系之矣。向之所能,俯仰之间,已为 陈迹,犹不能不以之兴怀。况系统复杂,调优艰难
2、。马云曰:“系统之不稳。岂 不痛哉!”每览昔人性能测试成就之由,若合一契,未尝不临技能嗟叹,不能喻之于怀。 固知技术名利为虚诞,齐知识业绩为妄作。后之视今,亦犹今之视昔。憾夫!故 列叙性能理论实践,录其指标模型策略,虽世殊事异,性能技术,其致一也。后 之览者,亦将有感于斯性能白皮书。郭芙 淘宝网测试掌门人2009 年 11 月 18 日于杭州目录序言. 2目录. 3引言. 5性能测试指标 . 5Vuser虚拟用户 5Transaction事务 5TPS每秒事务数 6PV Page View 6Peak PV 高峰Page View 6Concurrency并发 7Scenario场景 7Res
3、ponse Time响应时间 7Think Time思考时间 7CPU资源 8Load负载 9Std. Deviation标准差 10性能测试模型 . 10PV计算模型 10PV-TPS转换模型 12TPS波动模型 12共享中心性能测试模型 . 13前端页面性能测试模型 . 14性能测试策略 . 15性能测试评估 . 16关键业务 . 17日PV量 17逻辑复杂度 . 17运营推广计划 . 17其它 . 17性能测试类型 . 18性能测试压力变化模型 . 18性能测试类型 . 181. 性能测试. 182. 负载测试. 193. 压力测试. 194. 稳定性测试. 19性能测试执行方法 . 1
4、9单场景 . 19混合场景 . 20性能监控 . 20监控指标 . 20监控工具 . 21监控步骤 . 23性能分析 . 24分析原则 . 24分析信息来源 . 24分析标准 . 24分析工具 . 24性能测试通过标准 . 27性能测试流程 . 28性能测试流程图 . 28性能测试流程主要活动 . 29性能测试文件模版 . 30结束语 . 30参考文献 . 31版本更新说明 . 32作者介绍 . 32引言淘宝网自创立以来,除了对功能的要求很高以外,对性能的要求也越来越高。从最初的 系统框架性能测试、TOP-API 接口性能测试,到现在的 Web 应用性能测试,无线性能测试 领域,淘宝性能测试在
5、不断向前发展,横向、纵向都在不断深入、拓宽,不断创新。经过五彩石项目对淘宝的整体应用重构之后,淘宝网形成了以四个中心为应用基础的分 布式架构体系。而分布式网站的性能,很大程度上决定了网站的竞争优势。但是,一个应用 的性能由多方面因素决定,这样就增加了性能测试和性能调优的难度,也扩大了性能测试的 广度,这是一个挑战。专业的测试需要专业的团队,我们的团队也应运而生。本性能测试白皮书旨在以理论指导实践,以实践修正理论,将会从以下几个方面介绍和 分析淘宝的性能测试:性能测试指标、淘宝性能测试模型、性能测试策略、性能测试评估、 性能测试类型、性能测试执行方法、性能监控和性能分析、性能测试通过标准,以及性
6、能测 试流程和文件模版。同时,也是让更多的人更好地了解淘宝性能测试和性能调优,参与性能 测试,共同将淘宝网做得更大、更强、更稳定,并且期望淘宝的性能测试能成为电子商务性 能测试业界的标准。性能测试指标Vuser虚拟用户Virtual user,模拟真实业务逻辑步骤的虚拟用户,虚拟用户模拟的操作步骤都被记录在 虚拟用户脚本里。Vuser 脚本用于描述 Vuser 在场景中执行的操作。虚拟用 户在 性能场 景中 有以下 12 个状态 , Down, Pending, Init, Ready, Running, Rendezous, Passed, Failed, Error, Gradual Ex
7、iting, Exiting, Stopped. 如图 1 所示。图 1Transaction事务事务是性能测试脚本的一个重要特性。要度量服务器的性能,需要定义事务,每个事务 都包含事务开始和事务结束标记。事务用来衡量脚本中一行代码或多行代码的执行所耗费的 时间。可以将事务开始放置在脚本中某行或者多行代码的前面,将事务结束放置在该行或者 多行代码的后面,在该脚本的虚拟用户运行时,这个事务将衡量该行或者多行代码的执行花 费了多长时间。在性能测试脚本中,事务的标记会以下列形式出现(举例语言为类 JAVA 语言模式)。 如图 2 所示。trylr.start_transaction(QueryIte
8、mById); final ItemResultDO itemResult= itemQueryService.queryItemById(itemIdDo, options, mainDbRoute); final ItemDO item = itemResult.getItem(); catch (final Exception e)/ TODO Auto-generated catch block e.printStackTrace();finally lr.end_transaction(QueryItemById, lr.AUTO);图 2TPS每秒事务数TPS(Transactio
9、n Per Second)每秒钟系统能够处理的交易或事务的数量,它是衡量系统处 理能力的重要指标。TPS 是 LoadRunner 中重要的性能参数指标。图 3 是 TPS 单位时间段内的分布图。TAOBAO PERF-TEST图 3PV Page ViewPV 是 Page View 的缩写。用户通过浏览器访问页面,对应用服务器产生的每一次请求, 记为一个 PV。淘宝性能测试环境下,将这个概念做了延伸,系统真实处理的一个请求,视 为一个 PV。即,PV 的概念也适用于接口。Peak PV 高峰Page View即 PV 峰值,指一天中 PV 数达到的最高峰。Concurrency并发并发分为
10、狭义和广义两类。 狭义的并发,即所有的用户在同一时刻做同一件事情或操作,这种操作一般针对同一类型的业务,或者所有用户进行完全一样的操作,目的是测试数据库和程序对并发操作的处理。 广义的并发,即多个用户对系统发出了请求或者进行了操作,但是这些请求或操作可以是不同的。对整个系统而言,仍然有很多用户同时进行操作。 狭义并发强调对系统的请求操作是完全相同的,多适用于性能测试、负载测试、压力测试、稳定性测试场景;广义并发不限制对系统的请求操作,多适用于混合场景、稳定性测试 场景。Scenario场景性能测试过程中为了模拟真实用户的业务处理过程,在 LoadRunner 中构建的基于事务、 脚本、虚拟用户
11、、运行设置、运行计划、监控、分析等的一系列动作的集合,称之为性能测 试场景。场景中包含了待执行脚本、脚本组、并发用户数、负载生成器、测试目标、测试执 行时的配置条件等。Response Time响应时间响应时间是指从客户端发一个请求开始计时,到客户端接收到从服务器端返回的响应结 果结束所经历的时间,响应时间由请求发送时间、网络传输时间和服务器处理时间三部分组 成。在性能测试结果分析中,性能场景中事务的响应时间请参阅图 4 所示,事务响应时间分 为事务最小响应时间、事务平均响应时间、事务最大响应时间。图 4Think Time思考时间模拟正式用户在实际操作时的停顿间隔时间。 从业务的角度来讲,思
12、考时间指的是用户在进行操作时,每个请求之间的间隔时间。 在测试脚本中,思考时间体现为脚本中两个请求语句之间的间隔时间。TAOBAO PERF-TEST在脚本中的表现形式如下图 5 所示,加入的思考时间为 10 秒。lr_think_time(10);lr_start_transaction(Limit Promotion);web_submit_data(buy_now.jhtml, Action=http:/$hostname$:$port$, Method=POST,TargetFrame=, RecContentType=text/html,Referer=http:/:/$hostna
13、me$:$port$/auction/item_detail-0db2-auc_ID.jhtml, Snapshot=t18.inf,Mode=HTML, ITEMDATA,Name=catPath, Value=, ENDITEM, Name=item_id, Value=auc_ID, ENDITEM, Name=auction_id, Value=auc_IDgeng, ENDITEM, Name=auction_type, Value=b, ENDITEM, Name=title, Value=2009-08-17 10:24 162, ENDITEM,Name=x_id, Value
14、=db2, ENDITEM,Name=seller_id, Value=b929dfa7858c0e5a054fffd3550e68a2, ENDITEM, Name=allow_quantity, Value=100000, ENDITEM, Name=seller_nickname, Value=tbtest33, ENDITEM,LAST);lr_end_transaction(Limit Promotion,LR_AUTO);图 5CPU资源CPU 资源是指性能测试场景运行的这个时间段内,应用服务系统的 CPU 资源占用率。 CPU 资源是判断系统处理能力以及应用运行是否稳定的重要参数
15、。应用服务系统可以包括 应用服务器、Web 服务器、数据库服务器等。性能测试过程中,对 CPU 的监控以及分析报告、图表有 LoadRunner 自带监控分析、有 Linux 系统输出以及手工汇总、有第三方工具监控分析等。在此以 LR 监控分析图表(图 6)、 JVM 自带 CPU 监控图表(图 7)为例。TAOBAO PERF-TEST图 6图 7Load负载系统平均负载,被定义为在特定时间间隔内运行队列中的平均进程数。如果一个进程满 足以下条件则其就会位于运行队列中:1. 它没有在等待 I/O 操作的结果。2. 它没有主动进入等待状态(也就是没有调用“wait”)。3. 没有被停止(例如:等待终止)。 性能测试结果分析 Load 分布如图 8 所示。图 8Std. Deviation标准差TAOBAO PERF-TEST该标准差根据数理统计的概念得来,标准差越小,说明波动越小,系统越
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1