奥运票务网站崩溃之技术原因揭秘
奥运票务网站的崩溃搞得满城风雨的,在CSDN等了一段时间也没看到太多的分析,我就把我自己经历的一些事情写下来,供大家批一下吧。
这绝对是一个痛苦的过程,你自己如果去试一下的话就知道订一张奥运门票有多难了。9点一过,原来还可以顺利访问的网站一下子其慢无比,转头去打952008热线,半个小时都没有打进去,罢了,到中国银行看一下吧,到银行看到的结果更让人吃惊,一个小时竞没有下一个订单,还是回家上网吧,10点半了。
网站更让人心里凉透了,主页竟然是无法登录了,这个页面就是那天许多人看了一天的页面,估计短时间里很多人都忘不了这个页面的。根据第二天的新闻,有800万人的访问量,这应该就是从9点开始到10点的时候,网站瘫痪了,这并不奇怪,因为如此巨大的访问量实在是太吓人了,但接下来的事情就有点说不过去了。
我做过几个网站,对JSP,ASP也熟悉一点,稍微静下心来细细研究,就看出问题了:
如果你直接进http://www.tickets.beijing2008.cn/这个地址,进入的就是那个著名的页面,网页无法登录,登录的两个输入框完全没有了,但看一下IE地址栏就知道,它是临时把上面的网址改到一个新的这个静态页面上,提示上还有static的字样。看到这里你就知道了,原来的其它地址可能还可以访问!只是不让你从它的index.html页面进入了。
知道这些就好办了,在http://www.tickets.beijing2008.cn/后再猜一下打入member,login,即http://www.tickets.beijing2008.cn/member或http://www.tickets.beijing2008.cn/login就可以进入下一步了,完全绕开了它的主页面!
天啊,这个网站竞然这样架构。你要是在每个页面都加上一个验证机制就行了,这对程序员来说太容易了,为什么这样大型的网站是这个样子设计的。
这样进入到订票页面后速度就快了,按我的估计,能这样进来的人800万中应该不会有100万吧,这个网站据CSDN上有的人讲在雅典奥运会上用过,估计还能承受这么多的访问量。压力测试应该也做过,不会有什么问题的。
但往后的每一个页面的刷新都异常地困难,往往一个页面要刷上半个小时都过不去,到最后下订单的时候有一个10分钟的限制,如果你的订单不能在10分钟内完成,你所选定的票就会被释放,供其它的人选择。
这在程序上是一个同步锁的设计,搞过程序的人都知道,真正考验这个网站的就是这个地方,但从第二天奥运官方网站得到证实的消息是,有4万多张完成了订购。
天啊,4万多张,保守估计一下,能进入这个连接池的40万吧,连40万的访问量都把这个网站的订单系统搞瘫痪了,竟然还是经过了严格测试的程序!
这个不是官方的数据,是我估计出来的,但这个数字是只能少不会多的。
连接池也瘫痪了,准确地说是半瘫痪了,因为我最后还是用了两个小时的时间提交了订单,我订了两张,因为订单系统的半瘫痪,现在我查了一下我的订单,订了六张,但我并没多高兴,反而有点悲哀。因为这件事情可反思的太多了。