大型票务系统性能测试浅析
其中,优化项所有内容必须满足,附加项可以不满足,在评测结果中Y代表满足、N代表不满足、Null代表无优化项相关技术。评测结果共分为A、B、C、D、E和U六个级别。具体对应关系如下表所示:
表2 评级标准
4.2 后端性能测试方法
测试主要采用商业级别的性能测试工具进行测试,如HP Loadrunner。通过大规模模拟实际用户的操作行为,测试核心售票系统中注册、浏览、座位选择、支付等关键业务的响应时间和服务器实时处理能力,重点关注CPU、内存、I/O等信息,为操作系统、中间件和数据库以及服务器的性能优化和调整提供数据依据。
通常情况下,数据中心中用于支撑售票业务的服务器多达几百台,通过软件在测试中进行监控更容易实现,如UC Berkeley的开源集群监视软件Ganglia。Ganglia的核心包含gmond、gmetad以及一个Web前端,通过自动解析linux操作系统proc目录下的文件来获取操作系统的主要性能指标。Ganglia带来的系统负载非常少,几乎不会影响被监控系统性能。对于中间件和数据库等基础软件,可采用其自带的监视器或命令来获取性能指标。
在测试场景设计中,应考虑准确模拟混合业务的并发操作,以及过载访问的情况,可借鉴下表中的思路进行测试:
表3后端性能测试场景
通过测试考察运行环境的抗压能力,在成本和风险可接受范围内对整个运行环境进行合理优化,提高核心售票系统的处理能力。总的来说,高效的核心售票系统在上线前达到以下要求:
A、核心业务模块中无明显效率低下的模块
B、多个数据中心间实现了良好的负载均衡,整个运行环境中不存在明显的服务器资源消耗过度的情况
C、整个运行环境的网络承受负载的能力良好,各银行支付网点进行了合理的组网规划,网站与支付系统的流量实现良好分离
D、在正常和过载情况下,系统的定单数量/小时指标在合理范围内,代理服务器、交易服务器以及数据库服务器的资源消耗合理
5、总结
通过分析大型票务系统的访问特点和规律,提出了大型票务系统的性能测试策略和方法,该方法经具备普遍的合理性和较强的操作性,但是该方法还有待在更多大型票务系统性能测试中进行应用和完善。
1、引言
随着互联网的普及,越来越多的传统业务转移到了网络进行。但是由于大型票务系统受众访问高峰、持续性等特殊性,使得传统的性能测试策略并不适合该类系统的测试。例如北京奥运会票务系统和伦敦奥运会票务系统的在运营阶段不断的瘫痪、修复、上线运营的循环中,大型票务系统的性能测试显得尤为重要。
2、关键技术
2.1 Web应用响应时间
其中C1是用户发请求前在客户端完成预处理阶段;C2是客户端接收到服务器返响应后,对处理结果展现的阶段;A1是WEB Server或者APP Server对请求进行处理阶段;A2是数据库服务器对请求进行处理阶段;A3是WEB Server或者APP Server对DB Server 返回结果进行处理的阶段;N1是请求由客户端发出并达到Web/App Server 的阶段;N2是如果需要进行数据库相关的操作,由Web/App Server 将请求发送至DB Server 阶段;N3是DB Server 完成处理并将结果返回Web/App Server 阶段;N4是Web/App Server 完成处理并将结果返回给客户端阶段。
从用户的角度来看,响应时间=(C1+C2)+(A1+A2+A3)+(N1+N2+N3+N4);但是从系统的角度来看,响应时间只包括(A1+A2+A3)+(N1+N2+N3+N4)。
2.2 前端性能
所谓前端是相对于后端而言的,后端是用户分析用户请求、执行数据查询并对结果进行组织,形成浏览器可以完全呈现的内容;前端是负责将后端生成的内容通过网络发送给客户段浏览器,展现后端请求处理结果的。前端开发技术主要有(X)HTML/CSS/JavaScript/DOM/Flash等各种Web技术。前端性能主要是在客户端通过浏览器发送了一个请求,除去后端处理消耗的时间的浏览器展示后端访问请求的时间。也就是图1中C1+C2+N1+N2阶段,其中主要衡量接受到的数据的大小、接受响应数据的碎片程度等方面。
在交互式应用中,响应时间大于15秒,对于大多数人是无法容忍的,相应时间大于4秒时,人的短期记忆会受到影响,工作的连续性就会被破坏。对于一个用户的每次访问来说,80%的响应时间消耗在了前端。而且对于提升网站的访问速度而言,如果通过后端优化将响应速度提升一赔,那么整体的响应时间仅仅只能减少5%到10%;而如果通过优化前端将响应时间减少一半,则整体响应时间至少减少40%到45%。
2.3 后端性能
后端性能是指web Server或者APP Server在收到客户端响应后,对其进行处理,通过数据库数据返回结果,经过处理将返回响应发送给客户端的过程。也就是图1中逻辑业务流经过A1、A2、A3、N2、N3的过程中对各个阶段的响应时间、服务器资源利用率、网络负载等方面的衡量。
性能度量就是通过定义一系列可以反映程序性能的指标,并从程序实际运行的数据中获得度量结果的过程。性能度量的结果可以用于评估系统的性能好坏、分析性能瓶颈和改进系统性能等。针对Web应用性能,有两种常用度量指标:度量资源使用情况,度量响应时间。
3、大型票务系统性能评价方法
3.1 前段性能评价方法
对于大型票务系统而言,前端性能的优化主要是为了加快响应结果在客户端的响应速度,这样能够避免用户误以为无响应而反复的刷新造成服务器端压力。在评测过程中主要从如下几个方面进行考虑:
A、CSS文件或者代码至于顶部
B、JavaScript脚本文件或者代码至于文件的底部
C、CSS文件或者代码中无CSS表达式
D、JavaScript脚本文件或者代码中无重复脚本
E、移除无用的CSS
F、对JavaScript脚本进行了精简
G、精简CSS脚本
H、外链JavaScript脚本并且合并多个javascript脚本文件
I、外链CSS并且合并多个CSS文件
J、应用图片地图或者CSS Sprites
K、应用Expires头
L、无重定向
M、应用GZip压缩
N、配置ETag
在上述的评测内容中主要包括了两方面,其一是脚本文件的优化,资源文件的优化和CSS文件的优化三大方面。服务器文件优化就是降低在客户端访问服务器端时,除去HTML文档外其他所有内容的物理大小,减小传输时间和加载时间。其二是依据HTTP协议特性,通过配置中间件、修改源程序等操作进行的优化。在完成上述14项技术评价指标后,仍有如下4项附加项需要考虑:
O、应用Ajax缓存
P、应用CDN
Q、混淆JavaScript
R、页面DNS查找最小化
由于上述四项附加是由相对复杂,风险较大、实现成本较高技术决定的,因此附加项的满足条件就视项目的投入成本情况而定,并不一定要完全满足。
3.2 后端性能评价方法
由于票务系统通常在短时间内进行集中售票,存在短时间内访问量陡增、售票期间持续高压力以及与银行支付业务紧密相关等特点,因此保证大压力下的核心售票系统能够提供高性能的服务水平,将直接影响终端用户的购票体验。糟糕的用户体验包括:
A、超长的等待时间
B、页面无响应
C、支付失败
从性能测试角度看,整个运行环境在承受来自世界各地高强度的并发访问过程中,可能存在以下问题:
A、网络拥塞导致页面请求响应缓慢或超时报错
B、页面刷新机制导致在用户锁票、坐席分配以及支付阶段时,用户等待时间增长,订单处理速度急剧下降
C、大量的金额统计以及票务更新导致交易服务器和后台数据库繁忙
D、大量的VISA卡支付操作导致支付网点服务器繁忙,处理效率底下
为准确模拟实际情况,需将历史经验同本次售票方案相结合,预计并发访问人数、网点规模、数据规模等指标,在保证数据中心实现良好数据共享的情况下,测试的重点应涉及一下几个方面:
A、网络负载
B、多个数据中心间的负载均衡
C、峰值期间每小时定单数量
D、代理服务器、交易服务器、数据库服务器的资源消耗情况
E、长时间高效服务的能力
4、大型票务系统性能测试方法
4.1 前段性能测试方法
前端性能主要的评测工具有Google的Page Speed和Yahoo的YSlow。Google开发团队针对SteveSounder网页性能最优方法,成功地推出一款基于Firefox/Firebug的开发类插件Page Speed,旨在帮助开发人员分析网站性能存在的主要问题,并有针对性地提出优化改进意见。它支持的操作系统为Linux、Mac、Windows。在此之前, Google内部已经广泛使用PageSpeed优化网页前端性能。YSlow是有雅虎公司开发的免费前端性能检测工具。YSlow通过检测网页上的所有组件,包括JavaScript动态创建的组件,分析网页的前端性能。同时,YSlow依据前端性能的分析结果提出改进建议。
在应用上述两款任意一款给你工具进行测试后,将测试结果对应的填入下面的前段性能评测记录表中。
表1 前段性能评测记录表
其中,优化项所有内容必须满足,附加项可以不满足,在评测结果中Y代表满足、N代表不满足、Null代表无优化项相关技术。评测结果共分为A、B、C、D、E和U六个级别。具体对应关系如下表所示:
表2 评级标准
4.2 后端性能测试方法
测试主要采用商业级别的性能测试工具进行测试,如HP Loadrunner。通过大规模模拟实际用户的操作行为,测试核心售票系统中注册、浏览、座位选择、支付等关键业务的响应时间和服务器实时处理能力,重点关注CPU、内存、I/O等信息,为操作系统、中间件和数据库以及服务器的性能优化和调整提供数据依据。
通常情况下,数据中心中用于支撑售票业务的服务器多达几百台,通过软件在测试中进行监控更容易实现,如UC Berkeley的开源集群监视软件Ganglia。Ganglia的核心包含gmond、gmetad以及一个Web前端,通过自动解析linux操作系统proc目录下的文件来获取操作系统的主要性能指标。Ganglia带来的系统负载非常少,几乎不会影响被监控系统性能。对于中间件和数据库等基础软件,可采用其自带的监视器或命令来获取性能指标。
在测试场景设计中,应考虑准确模拟混合业务的并发操作,以及过载访问的情况,可借鉴下表中的思路进行测试:
表3后端性能测试场景
通过测试考察运行环境的抗压能力,在成本和风险可接受范围内对整个运行环境进行合理优化,提高核心售票系统的处理能力。总的来说,高效的核心售票系统在上线前达到以下要求:
A、核心业务模块中无明显效率低下的模块
B、多个数据中心间实现了良好的负载均衡,整个运行环境中不存在明显的服务器资源消耗过度的情况
C、整个运行环境的网络承受负载的能力良好,各银行支付网点进行了合理的组网规划,网站与支付系统的流量实现良好分离
D、在正常和过载情况下,系统的定单数量/小时指标在合理范围内,代理服务器、交易服务器以及数据库服务器的资源消耗合理
5、总结
通过分析大型票务系统的访问特点和规律,提出了大型票务系统的性能测试策略和方法,该方法经具备普遍的合理性和较强的操作性,但是该方法还有待在更多大型票务系统性能测试中进行应用和完善