如何压力测试电子商务网站
第1页:背景与面临的挑战!
如今,与百姓日常生活密切的电子商城、网络订票和网上银行等系统都是电子商务网站的典型案例。这些系统涵盖了产品宣传展示、商品选购、交易结算、服务与客户反馈等诸多功能。当需要同时向一个庞大的群体提供这些服务,性能考量往往是系统成功运营的关键。
以国内某著名电子购物网站为例,该网站有3000万注册用户,日均访问量达8000万,日均订单处理超过30万单,日交易额过亿元。可以想象,系统性能对该网站拥有者的收益有着至关重要的影响。而且,网站的性能优化不仅可以提高用户的访问体验,还可以帮助商家节省网站的初始建站成本和维护费用。
电子商务网站的性能优化,离不开仿真真实环境的压力测试。而思博伦通信则是这方面的专家。近几年,思博伦基于Avalanche的电子商务网站测试解决方案已经为诸多客户完成了这方面的测试,如:某电信运营商院线通系统,某著名大型视频门户网站产品预约/抢购系统,某权威电视媒体巴西世界杯直播节目“xx赢”手机版等。(相关测试服务需求可发送邮件至TSAsia@spirent.com)
面临的挑战
(一)复杂的系统
下图是一个典型的电子商务网站的结构示意图。
其中,Web服务器、数据库服务器和应用服务器代表了网站的核心内容。具体说来,前端Web服务器负责接收并处理来自用户的HTTP请求,并生成Web页面反馈给用户;中间的应用服务器负责执行商务逻辑;后台数据库和文件服务器负责存储用户、产品信息及状态。有的系统在数据库服务器前还会部署数据缓存设备已提高访问性能。外围的防火墙/IPS是主要的网络安全组件。4~7层负载均衡器则充当了应用交换机的角色,负责在海量用户访问与多台服务器间进行负载分担。
对这个复杂的系统来说,成百上千的服务器和其他设备捏合在一起,面对海量用户的访问,用户的行为也不一致,有的在注册,有的在修改购物车,有的在结帐,等等。仍能保证绝大多数用户顺畅地访问是一个挑战。与之相对应,创建一个可信的测试模型非常重要且也是一个挑战。评估系统中某个单一组件的性能并不复杂,但是,如果没有仿真海量用户且模拟真实用户行为的测试工具,想预知这个复杂购物网站系统的性能、瓶颈或故障点位于何处,更像是一项不可能完成的任务。
(二)故障的代价
对电子商务网站来说,系统故障往往意味着高昂的代价。一个大型购物网站、机票/酒店预订系统出现难以接受的页面影响延迟或拒绝服务,在一个小时之内,就会损失数百万元的订单。它对品牌信誉度的负面影响可能直接导致客户粘合度的降低,这种无形的损失影响更为深远。
而且,系统出现故障的时机常常是商家最不愿意面对的。比如,某大型体育赛事网络购票系统刚刚上线;某购物网站五周年店庆限时抢;某商旅网出台暑期优惠套餐等。这些时刻对网站商家来说都是名利双收的黄金档。
这些黄金档期的背后,往往意味着大量用户的突发访问,或者说并发用户多、单位时间用户上线快。
(三)升级的困惑
随着用户的增加、流量的增大,电子商务网站也要面对成长的烦恼。
一方面,网站希望推出更为丰富的特性来保持竞争优势,同时保证越来越多的客户仍能得到顺畅的服务。另一方面,网站架构师不得不深思熟虑。因为,网站的升级不只是换个主频更高的CPU、增加几条内存那么简单。不能对症下药、盲目地尝试不仅会浪费投资,还浪费了宝贵的占领市场的时间。
架构师需要做出判断,哪些组件需要升级?或者说,系统目前的瓶颈是什么:是CPU处理能力滞后,导致复杂的动态网页不能及时被处理而延迟呈现给用户浏览器?是网络带宽或磁盘I/O不足,导致页面传输延迟明显增大?还是与数据库的连接承受不了目前的并发用户数规模?可以预见,若后台数据库急需优化,但此时只是忙于给前台Web服务器更换更快的CPU是无济于事的。
值得注意的是,面对用户、流量可预见地持续增加,系统升级就已经不是信手拈来。更何况面对那些突发的状况?比如:春运期间火车票预订系统异乎繁忙,购物网站店庆优惠及时抢,以及暑期度假潮商旅网站的业务量激增等。
而且,这些突发情况往往在短时间内结束,现实环境中很难复制。使得网站没有足够的时间在“实战”中找到瓶颈所在,并检验升级的效果。若等到下一个爆发周期再去验证,潜在的商业损失很大。
第2页:测试方法
测试方法
作为强有力的压力测试工具,思博伦Avalanche通过模拟真实的用户访问,可以帮助电子商务网站找到性能瓶颈及故障点。
(一)仿真真实用户
思博伦Avalanche仿真真实的用户行为。实现的过程如下:
1)抓取真实浏览器用户在电子商务网站上交易过程的URL,URL中包含注册、登陆、产品代码、账户等信息;
2)将抓取的URL导入到Avalanche模拟的客户段的Action List中,并根据需要进行修改,如:从Avalanche的数据库中顺序提取10000个不同的用户/密码用于登陆;
3)Avalanche模拟的客户端可仿真不同的浏览器及不同的版本。支持Cookie,并可与SSL结合用于加密访问;
4)Avalanche中的Action List被顺序执行,并支持条件判断等,用于网站返回值的验证。
以某购物网站为例,用户访问首页并进行注册,之后自动或手工登陆,然后进行选购。在将选购商品加入购物车后,通过网上交易平台完成结帐(在性能测试中,结账部分一般可以由研发人员在Avalanche执行某个动作后返回特定值来模拟,而不会走真正的付款流程)。如下图所示。
当然,除了以上主要业务流程外,网站还包含其他用户行为,如:用户浏览不同分类下的产品宣传、修改或取消订单、用户收到货物后对产品和服务进行评价等。
Avalanche对上述行为进行仿真,如:登陆、浏览、选购、评价等。并且可以按照一定的比例对用户的行为进行混杂,如:90%的在线用户从浏览首页开始,30%的用户点击“即时抢”,10%的用户在下订单,等等。
(二)测试拓扑
Avalanche可模拟数百万的并发客户,通过Internet访问电子商务网站。测试拓扑如下图所示。
在此拓扑中,可以将电子商务网站作为一个整体进行评估,即整个网站被看成一个“黑盒”。也可以在发现整体出现问题后,采用隔离法对网站中的某个或某几个组件进行单独排查测试。比如,测试系统中的缓存设备对某些页面是否有效;在面对海量、具有混杂行为的用户时,响应成功率的下降原因等。
第3页:测试案例(一)
测试案例
案例一:测试某电信运营商大型在线影院订座/购票系统
1.测试目的
1)通过对在线影院订座/购票平台的性能测试,为营销推广提供有力支撑和可行性评估,为系统扩容工程提供量化依据;
2)通过对平台各个子系统(接入、订购、支付)的处理能力进行测试,检测各子系统和端到端的网络服务质量。
2.测试范围及需求
本测试主要包括压力测试和过载测试。测试要求模拟真实的用户行为,并按照指定的行为比例进行混杂。测试涵盖查询、选座、订单提交和支付等业务流程,涉及接入子系统、订购子系统和支付平台。
当用户行为确定后,Avalanche通过调整用户规模,如并发用户数或交易速率来提高或降低对被测系统的压力。
运行过程中和测试结束后,Avalanche提供从网络流量、TCP到应用交易各个层面的状态统计和结果。如下图所示。
在实际测试中,用户对整个系统进行了测试,如下表所示。
除了端到端测试,还分别对各个子系统进行了评估,包含:接入子系统、订购子系统和支付子系统。例如,下表为接入子系统的结果统计。
3.测试的价值
在使用思博伦Avalanche进行测试后,来自用户的反馈如下:
1)Avalanche配置简单,软、硬件结合,无需采用多台PC/服务器同时部署某用户行为仿真软件的方式,某仿真软件配置需花一周左右的调试周期,而Avalanche配置调试过程只需要半天时间;
2)测试流程真实有效;通过对服务器端日志、用户数据库参数变更及返回结果值,反向验证了Avalanche测试仪发起请求的真实有效性;
3)压力测试反映了现网真实的结果。用PC/服务器+某仿真软件的方式模拟大量并发用户做性能测试,均无发现服务器性能瓶颈。但在去年的圣诞节期间,我系统多次因大量用户的登录和付费而瘫痪宕机,采用Avalanche则轻松复现这一系列问题。
4)测试结果丰富,帮助研发人员快速定位问题;通过对Error Code、客户端独立统计、TCP结果等综合分析,研发人员能快速在事件日志中找到问题原因。
第4页:测试案例(二)、(三)
案例二:某著名大型视频网站的产品预约/抢购系统压力测试
1.测试目的
在产品预约、抢购活动开始之前,对网站系统的性能进行测试;通过压力测试,找到系统瓶颈,进而帮助系统优化,确保预约/抢购活动的顺利进行。
2.测试范围及需求
本次测试为压力测试,设计到网站系统的登录模块、预约模块、抢购模块和支付模块。要对包括每个模块的性能和整个系统的性能进行测试,测出系统瓶颈和薄弱环节。
需要模拟大量真实用户同时操作,查看交易成功率和页面响应时间。同时确保系统在压力测试的情况下响应及时,不会产生未知错误影响网站用户体验。
3.测试的价值
在压力测试时,网站系统登录模块、抢购模块和支付模块后台均出现报错信息。经定位发现诸多问题,举例如下:
1)后台数据库系统存在瓶颈速度慢,影响了各模块的响应速度;
2)在某模块压力测试情况下,需要查找缓存的处理而转去查数据库;
3)登录模块存在瓶颈,大量用户上线时主从系统同步有问题,导致预约失败;
在压力测试时,会产生相关的总体结果,同时也会统计网络系统中产生的二层到七层的详细结果,对于系统问题分析和定位有很大帮助。如下图:
在思博伦Avalanche的帮助下,不仅帮助用户很快定位出系统瓶颈和问题,而且,在用户解决了问题后又再次进行了验证和调优,很好的保障了预约/抢购活动的进行,保证了系统最终上线时,用户的良好访问体验。
案例三:某权威电视媒体巴西世界杯直播节目“xx赢”手机版
1.测试目的
面对潜在的海量手机球迷用户,巴西世界杯“xx赢”节目上线前进行系统瓶颈查找及性能优化。
2.测试内容
使用思博伦Avalanche仿真大量手机用户访问“xx赢”网站。针对《xx赢》各个手机访问接口,如注册、验证、登陆、答题,模拟大量世界杯球迷注册、验证、登陆及答题行为,对系统进行了不同规模的压力测试。既仿真节目外的平缓海选时段,又仿真每晚《xx赢》与电视直播同步的答题节目开始后的高峰突发时段;既模拟出不同的手机号段与验证码,又对网站的返回结果进行关键字搜索和判断。
3.测试的价值
网站的注册接口和答题接口,在指定的用户规模仿真下,研发人员本来认为可以顺畅访问的情形,均发现了明显的性能障碍。在思博伦Avalanche的反复测试配合下,研发人员解决了存在的代码问题和数据缓存服务的设计问题。为系统在世界杯直播期间的顺畅访问作出突出贡献。