本空间文章,除特殊说明外,均为原创!
奥运订票网站瘫痪 开发商技术能力遭质疑
上一篇 /
下一篇 2007-12-05 17:38:04
原文:http://tech.it168.com/i/2007-11-05/200711051858734.shtml;
【IT168技术分析评论】
摘要:大规模并发访问网站如何架构?11月5日,北京奥组委票务中心公布新的北京奥运会门票第二阶段销售政策。即采用给定一段时间提交订单,然后采用一次性抽签的方式决定购票人资格。这实际上是改变需求来化解了这一技术问题。
10月30日,北京奥运会门票面向境内公众第二阶段预售正式启动。上午9:00点一开始,不到半小时,网站系统便宣告瘫痪。访问者看到,官方票务网站当天上午开始,都只是显示“系统繁忙,请稍后再访问.不便之处敬请原谅.”的提示信息。

当天官方网站发布了如下的致歉消息,“上午9时至10时,官方票务网站的浏览量达到了800万次,每秒钟从网上提交的门票申请超过20万张,票务呼叫中心热线从9时至10时的呼入量超过了380万人次。由于瞬间访问数量过大,技术系统应对不畅,造成很多申购者无法及时提交申请,为此北京奥组委票务中心对广大公众未能及时、便捷地实现奥运门票预订表示歉意。”

而此前,组织者声称已经对第二阶段的售票做了充分准备,“为了应对在30日可能出现的奥运门票订票高峰,北京奥运票务中心容军表示,三种购买渠道连接同一售票数据库,在优先权上没有区分。票务系统已经做了多次压力测试,票务系统每小时将能处理3万张门票的销售,以及承担每小时100万次以上的网上浏览量,应该说可以确保承受启动时期的一个压力。
引发国内技术社区广泛讨论 开发商技术能力遭到质疑
据记者了解,北京歌华特玛捷票务有限公司(由美国Ticketmaster公司、中体产业集团股份有限公司和北京歌华文化发展集团三家企业组成)是北京奥组委指定北京2008年奥运会票务服务独家供应商,作为票务服务独家供应商,该公司将为北京奥组委提供奥运会和残奥会门票销售技术系统平台、北京奥组委票务网站、票务呼叫中心和场馆现场售票运营、客户服务等在内的票务服务。
事故发生后,北京歌华特玛捷票务有限副经理杨力对新京报记者透露,此次票务官网的流量容量是每小时100万次,但承受了每小时800万次的流量压力,所以系统在启动不久就出现了处理能力不足的问题。
杨力说,从昨天上午8点左右开始,就有不少网民登录票务官网排队等待申购门票。据他了解,从上午9点正式开始售票到中午12点,3个小时内,票务网站被浏览次数达到2000万次。这与他们此次所提供的100万次/小时流量相差甚远。
“不停地刷新网页,也是造成网络拥堵的原因之一。”杨力说,不少网民在无法正常登录后便不断刷新,“这就相当于一名申购者变成了若干名申购者了,无形中增大到了网站流量。从技术角度讲,网站的流量几乎成几何倍增长,导致其他申购者无法登录”。
此外,在票务技术系统上,票务官网、中国银行指定代售网点以及呼叫中心(即订票热线)用的都是一个售票系统平台,该系统会自动确认订单并按先后顺序进行处理。由于昨天申购的人数庞大,加上网民不停地刷新页面,最终造成奥运门票无法正常销售。
对此,奥运票务中心有关人员却有不同的说法。奥运票务系统瘫痪,错不在“先到先得”政策,还是当时系统设计有问题,没有考虑到如此高的需求。其实,比现在再高的瞬时流量,只要投入足够的资金和人力,系统设计合理,也可以满足。记者就800万次的访问压力询问一些资深网站架构师,他们表示,从技术上说,每小时800万次的访问压力是完全可以做到的。
票务中心有关人员称,主要还是系统后台的数据库的处理能力,在设计、规划方面,还有待于改进。但这个问题要在5天内解决,也有一定难度,目前正在集中攻关。他还透露,如果技术上一时无法解决,就要考虑对“先到先得”政策有所调整。
引发技术社区关注和讨论
瘫痪事件很快引发了技术人员对于软件性能和测试技术的关注。随后几天,关于类似于奥运订票网站等大规模并发访问的网站架构、开发、压力测试等相关技术,在国内各大技术社区引起网友广泛讨论。
来自于技术社区的网友普遍表达了对于高考查分,日语考试报名、奥运订票等公共服务网站经常出现大规模瘫痪表示不满,对这些网站的技术开发团队的技术能力和实力表示质疑,甚至有网友留言,“请开发和架构奥运订票网站的技术人员站出来说话,面对大家在技术上的疑问,回答一些问题。”
网友mydeman在其Blog上留言表示,“暂且不说这个会造成多大的影响,就是作为一个真正的设计开发者本身,也应该为这个事件而汗颜。作为开发人员,看到自己开发的系统稳定运行、得到客户认可,是莫大的幸福。这个事件所带给我们技术人员不仅仅是茶余饭后的谈资,而应该是关于设计、测试等技术问题的思考。”
还有网友认为,信息领域的豆腐渣工程,远比建筑领域要多。奥运订票网站是中国人的脸面,不管出现什么杨的技术问题,技术服务提供商都应该有充分的估计。
对于一个软件项目,基本是在质量、进度、成本三者做平衡,但是风险也是不能忽略的。这个项目绝对低估了上线后的风险。更是低估了这个项目的重要性和与意义。
大部分网友都认同,这是一个规划不周到的项目,无论是规划、还是风险都没有解决好。
奥运订票网站性能,压力究竟有多大
根据官方网站公布的数据,技术社区的网友zeeslo对网站性能进行了粗略地计算:
官方票务网站浏览量平均为:2200次/秒以上。
从网上提交的门票申请:200000张/秒以上。
先来看首页的浏览量,这里,我们可以看到
http://www.tickets.beijing2008.cn/zh-cn_static_home.html
打开这个页面加载的字节数为:170.216KB。
2200次/秒,也即:374475.2KB/s,约为365.6984375M。
也就是说这个站点每秒钟处理浏览产生的流量就大概是366M。而从打开首页,一直到确认订票如果不重复操作的话,应该是10步。在这之前产生的流量要更大。我们可以这样来理解,一秒钟有2200个用户打开首页。这个是并发的用户数。按比较密集的概率来计划,大概有15000-22000个用户在不同的位置打开这一链接。这一比例应该比较高了。
用22000个/秒用户来计算,如果用性能测试工具来做性能测试,按每台机器1G内存来计算,其他配置均不会成为瓶颈,如果一个虚拟用户用600K内存,每台机器拿400M内在来运行用户,也需要近40台机器来实现压力。如果脚本比较复杂。
注:每台机器跑600用户,这是在性能测试中,算比较高的使用率了。
每个虚拟用户占用的内存数 需要的机器数
600K 37台
1024K 55台
以上只是从完全没有时间间隔的方式来运行迭代的方式来计算的。而以上分析只是停留在浏览首页的阶段。如果再加上其他的订票步骤,估计数据量会更大,需要的机器更多。zeeslo用loadrunner 8.1加10个用户,大略的跑了一下首页,看到结果中network time的时间比较长,这是在情理之中的,毕竟,zeeslo的带宽也不是很大,还要经过一些路由。
server time比较短,平均在0.048秒,标准方差为0.02(这个结果是跑了三次得到的平均值)。
zeeslo在文章中写道:“ 当然,这时肯定也有其他人上线来浏览,而我只是从我这个客户端来判断的。其他的客户要看他们的网络质量了。另外,每秒钟从网上提交的门票申请超过20万张,这些数据显然没有成功处理完。因为前面说截至上午11时,各个销售渠道共售出门票约9000张。这个网站采用的策略是:先到先得。也就是大家一块抢。申请肯定会很多。但是,售出的只有9000张。可见很多数据还没能处理就瘫痪了。这里的20万不知道包括哪些请求。估计只能开发商明白了。 ”
通过大致测算,zeeslo认为在正常情况下,奥运网站的性能还是挺好的。主要问题是对需求估计严重不足,当然性能也无法达到要求。
技术网友踊跃给出自己的设计建议 “先到先得”是需求方提出的需求,而技术人员就应该想到这个需求背后所有的可能性,说这个销售策略有问题,实际上是说用户提出的需求不合理。
为什么会出现“每秒钟网上提交门票申请超过20万”这种情况?这可以用“销售的系统压力估计不足”来敷衍,但是压力测试的极限是多少?超过这个极限是怎么处理的?没有处理的预案,怎么就敢使用程序?社区当中,质疑开发商技术能力的声音越来越多。
在社区的讨论中,大部分技术网友认为还是应该提前找到解决方案的。比如可以出一个折中方案:支持到一定程度即可,同时在
软件上进行限制。比如连接数到一定程度就进行一定的处理,例如可以提示网站访问人数太多。但是绝对不能压垮,因为网站崩溃这就是事故了。
“比如你用LoadRunner压一下百度,压一会就不能访问了——不是把网站压得怎么样了,而是百度不让你访问了。”只要做好相关预案,是绝对不会出现崩溃事故的。
比如,可以限定表单的提交量,即使是“先到先得”也应 该有个准备,提交前做个排队系统、发送验证系统等等,都提前控制提交表单量,虽然压力可能会集中在这部分排队验证上,但是一旦通过,表单提交系统的压力会大大减轻,成功率会大大提高,也不会造成票务系统数据库瘫痪,整个网站的压力分布也能分散。没有任何的限制,所有用户开始就可以选票,马上提交,数据库如何能够处理这么集中的压力。
此外,网友从需求分析的设计实现方面,也发现了网站的很多缺点:需要用户访问的不紧急不必要页过多。
例如,取票网点选择竟然在订单的流程中,明年6月才取票,为什么要早早的就要设置,定上票以后再设不行么?定不上票这些选择这些操作不全是无效操作么!这步操作,这几个页面,20万订单中要浪费多少
服务器资源,浪费多少数据库资源,都这么设计网站,访问量这么大,什么
服务器什么数据库能承受呀!
面设计的用户引导方面,也可以有改进的地方。比如:可以在订票前显示票的剩余量,或者直接关闭无票项目申请接口。虽然即时显示票的剩余量不太现实,但是设定个界限告知用户票的存量是可以实现的,这样很多用户预先知道了订票的可能性,就会放弃选择存量小,不太可能成功的项目。象现在这样最后才去查询票的存量,既浪费数据库资源,又给用户带来很大的不便。以我为例,我数次选择不同篮球场次不同价位的票,每次在提交表单最后才能得到无票的结果,每次都要重新选择,反反复复,一个用户如此,20万提交表单的用户呢?这不仅加大了网站负担,用户友好性上做的更是失败。
目前,高并发的大规模网站
架构技术,一直是
技术开发领域的热门话题,然而国内能够真正处理好这些技术问题的公司又寥寥无几。随着中国互联网技术的发展,越来越多的网站正面临这些问题,因此,分析奥运订票网站的崩溃,从技术角度而言,有特别重要的意义。
11月5日,北京奥组委票务中心公布新的北京奥运会门票第二阶段销售政策。即采用给定一段时间提交订单,然后采用一次性抽签的方式决定购票人资格的政策。这实际上是改变需求来化解了这一技术问题。然而,“先来先得,在线抢定”这一需求的技术实现,还会在各大技术社区深入持久地讨论。尽管这是一个失败的技术项目,但希望其他奥运
信息化项目能引以为戒。
导入论坛
引用链接
收藏
分享给好友
推荐到圈子
管理
举报
TAG:
高性能网站
架构技术