如何压力测试电子商务网站

如何压力测试电子商务网站

第1页:背景与面临的挑战!

如今,与百姓日常生活密切的电子商城、网络订票和网上银行等系统都是电子商务网站的典型案例。这些系统涵盖了产品宣传展示、商品选购、交易结算、服务与客户反馈等诸多功能。当需要同时向一个庞大的群体提供这些服务,性能考量往往是系统成功运营的关键。

以国内某著名电子购物网站为例,该网站有3000万注册用户,日均访问量达8000万,日均订单处理超过30万单,日交易额过亿元。可以想象,系统性能对该网站拥有者的收益有着至关重要的影响。而且,网站的性能优化不仅可以提高用户的访问体验,还可以帮助商家节省网站的初始建站成本和维护费用。

电子商务网站的性能优化,离不开仿真真实环境的压力测试。而思博伦通信则是这方面的专家。近几年,思博伦基于Avalanche的电子商务网站测试解决方案已经为诸多客户完成了这方面的测试,如:某电信运营商院线通系统,某著名大型视频门户网站产品预约/抢购系统,某权威电视媒体巴西世界杯直播节目“xx赢”手机版等。(相关测试服务需求可发送邮件至[email protected])

面临的挑战

(一)复杂的系统

下图是一个典型的电子商务网站的结构示意图。

其中,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的反复测试配合下,研发人员解决了存在的代码问题和数据缓存服务的设计问题。为系统在世界杯直播期间的顺畅访问作出突出贡献。

时间: 2024-12-19 13:06:27

如何压力测试电子商务网站的相关文章

pylot压力测试工具

由于版本的兼容性问题,现在在windows下搭建pylot+matplotlib压力测试环境真的会令人吃尽苦头.这是因为,pylot从2009年后就不再更新了,而跟pylot搭配的软件python.numpy和matplotlib还在不断更新着,导致pylot不再兼容新版本的python.numpy和matplotlib,而老版本的跟pylot兼容的python.numpy和matplotlib又不容易找到. 昨晚捣鼓了很久,我终于找齐了这四个极品软件,在xp里能顺利安装使用.这里与大家分享下.

网站压力测试工具 Webbench

webbench最多可以模拟3万个并发连接去测试网站的负载能力 Webbench是有名的网站压力测试工具,它是由 Lionbridge公司(http://www.lionbridge.com)开发. Webbech 能测试处在相同硬件上,不同服务的性能以及不同硬件上同一个服务的运行状况.webBech的标准测试可以向我们展示服务器的两项内容:每秒钟相应请求数 和每秒钟传输数据量.webbench不但能具有便准静态页面的测试能力,还能对动态页面(ASP,PHP,JAVA,CGI)进行测试的能力.还

webbench网站压力测试工具

-----------------------介绍 Webbench是有名的网站压力测试工具,它是由Lionbridge公司(http://www.lionbridge.com)开发.它的帮助文件和文档请到:www.webbench.com上查看. Webbech能测试处在相同硬件上,不同服务的性能以及不同硬件上同一个服务的运行状况.webBech的标准测试可以向我们展示服务器的两项 内容:每秒钟相应请求数和每秒钟传输数据量.webbench不但能具有便准静态页面的测试能力,还能对动态页面(AS

Webbench网站压力测试

Webbench是有名的网站压力测试工具,能测试处在相同硬件上,不同服务的性能以及不同硬件上同一个服务的运行状况.webBech的标准测试可以向我们展示服务器的 两项 内容:每秒钟相应请求数和每秒钟传输数据量.webbench不但能具有便准静态页面的测试能力,还能对动态页面(ASP,PHP,JAVA,CGI)进 行测试的能力.还有就是他支持对含有SSL的安全网站例如电子商务网站进行静态或动态的性能测试. Webbench1.5下载地址:http://pan.baidu.com/s/1boVkWT

网站压力测试工具webbench使用说明

一.webbench简介 Webbench是有名的网站压力测试工具,它是由Lionbridge公司(http://www.lionbridge.com)开发.它的帮助文件和文档请到:www.webbench.com上查看.       Webbech能测试处在相同硬件上,不同服务的性能以及不同硬件上同一个服务的运行状况.webBech的标准测试可以向我们展示服务器的两项 内容:每秒钟相应请求数和每秒钟传输数据量.webbench不但能具有便准静态页面的测试能力,还能对动态页面(ASP,PHP,J

初步了解网站压力测试工具

一.ab网站压力测试 ab是apache自带的压力测试工具,ab是apachebench命令缩写.它不仅可以对apache服务器进行网站访问压力测试,也可以对或其它类型的服务器进行压力测试.比如nginx.tomcat.IIS等. 如:ab -n 1000 -c 50 http://www.newdev.gztest.com/(-n 全部请求数  -c 并发数) Requests per second: 108.61 [#/sec] (mean) #每秒请 求数(平均)//大家最关心的指标之一,

开发人员学Linux(4):使用JMeter对网站和数据库进行压力测试

前言表面看来,JMeter与本系列课程似乎关系不大,但实际上在后面的很多场景中起着重要作用:如何获知修改了某些代码或者设置之后系统性能是提升了还是下降了呢?商业的压力测试工具LoadRunner确实很高大上,但是据说费用也不便宜且体积也不小,而目前最高版本的开源免费压力测试工具JMeter3.2压缩包体积才不到53M,而且对于开发人员而非专业测试人员来说,JMeter提供的测试功能已经够强大了.要完整地介绍JMeter,即使把JMeter自带的文档翻译成中文就是一本厚厚的书了.但是在本篇只讲述如

十大抢手的网站压力测试工具

两天,jnj在本站发布了<如何在低速率网络中测试 Web 应用>,那是测试网络不好的情况.而下面是十个免费的可以用来进行Web的负载/压力测试的工具,这样,你就可以知道你的服务器以及你的WEB应用能够顶得住多少的并发量,以及你的网站的性能.我相信,北京奥组委的订票网站的开发团队并不知道有这样的测试工具. Grinder –  Grinder是一个开源的JVM负载测试框架,它通过很多负载注射器来为分布式测试提供了便利. 支持用于执行测试脚本的Jython脚本引擎HTTP测试可通过HTTP代理进行

Linux下Web网站压力测试工具Webbench

webbench最多可以模拟3万个并发连接去测试网站的负载能力,个人感觉要比Apache自带的ab压力测试工具好用,安装使用也特别方便,并且非常小. 一,环境:linux 二,安装方式:编译安装 具体步骤如下: 1,安装编译工具: [[email protected] install]# yum install ctags wget make apr* autoconf automake gcc gcc-c++ 2,下载该软件包 [[email protected] install]# wget