现在的位置: 首页 > IT运维 > 正文

IT人角度分析京东商城Server is too busy事件(转)

2011年11月15日 IT运维 ⁄ 共 7062字 评论数 3 ⁄ 被围观 1,015+

京东商城策划的正常折扣之后,只要满200元就五折购书活动,营销活动策划的非常成功,但是第一次活动出现无法下单或无法付款等一些问题,提示网购者错误信息为Server is too busy,然后京东商城创始人刘强东先生站在用户角度表达不满意,并且要求加三倍机器也要第二天重新开启购书促销活动,但是第二次活动继续出现Server is too busy。纵观整个事件,不管是活动策划效果,还是京东商城或创始人刘强东先生的危机公关,以及主动透露对待信息部门的态度,都非常成功,唯一失败的是出现戏剧性的Server is too busy,也许没有这个事件京东商城的促销活动并不会引起这么大的影响,个人相信这不是事先策划过的事情,但是此事件暴露京东商城技术实力的薄弱和管理者的落伍,甚至京东商城号称要招5000名工程师等,根据这一系列的信息,我们分别从IT技术从业者技术管理者的角度阐述一些个人的观点,希望对网络世界的我们有所启发或帮助。

(一)营销活动的前期准备及部门协同

我们先围绕2011年11月1号京东商城促销购书营销活动事件展开,超低价促销的营销活动,那么有一些信息就需要运营部门和技术部门合作一起梳理

(1) 参加促销活动的商品种类、商品名称和数量等信息;

(2) 促销活动的力度,持续的时间;

(3) 促销活动可能会吸引多少网购者参与,并发访问量能够达到什么规模,这些要通过事先收集本站及其它竞争对手的过往数据及经验进行综合分析;

(4) 网站不进行特殊的技术处理情况下,能承受多少用户并发购物,并且对不同环节进行预估,尤其京东商城的购物车应用;

(5) 网站提供服务的负载均衡设备、Web应用服务器、后端应用服务器、MemCached等可正常扩容情况下,可以支撑多少购物者同时在线完成购物流程:挑选物品、添加到购物车、填写邮寄地址等信息、付款等;

(6) 把第4,5步骤得出的系统能力,与营销策划活动的部门提供的可能购物者有多少进行最大值和最小值比较,计算出差值并且做好最坏打算,如何保证一定数额的购物者能正常完成购物流程,以及与运营部门商议是否可放宽促销活动的时间宽度,减少并发购物人数的概率性;

(7) 评估是否有条件,以及有合理的时间和资源对策划的运营活动开发一套新的系统,以支撑运营活动的开展;

(8) 对参与促销活动的物品信息及相关物品信息(比如促销为书籍,可能非促销的书籍也会购买,尤其热门书籍),优先生成静态页面储存到专门开辟的MemCached服务器中,提高对用户的响应速度和减少现有系统的负载;

(9) 大型营销活动,还可能涉及CRM部门、财务部门、物流等相关部门,尤其物流涉及的仓储和配送预计能承担的负荷能力,事先告知而避免购物者下单之后抱怨物流太慢或货物质量等问题;

(10) 限时大规模的促销活动,也必定会带来带宽和安全方面的问题,必须做好监测防备DDOS攻击的能力,避免导致营销活动泡汤;

(11) 运营活动结束之后,需要得到什么样的数据分析报告等,都要事先规划好,甚至预演过;

相信京东商城能成为B2C领域独领风骚的公司,内部专业人士可以列出更多更详细的信息,就不继续往下,把上述可能需要大家一起梳理的信息罗列出来一部分,就是告诉大家:我们是一个整体,任何一个环节的疏忽都可能成为瓶颈而导致出问题,要把部门与部门之间配合详细描述清楚,且使营销活动参与支撑的每一个人都清楚自己要做什么,要给别人什么支持或信息,甚至通过梳理信息和商议一些做法,可以达到承载更多的购物者参与促销运营活动,并且为公司节省成本。

(二)营销活动期间出现的故障及关联信息

京东商城网站大量用户出现报错信息(注:笔者也是参与购书活动的用户之一):

IT人角度分析京东商城Server is too busy事件

IT人角度分析京东商城Server is too busy事件

这样大规模营销活动时,其他企业也出现类似的故障花絮,淘宝策划的双十一促销活动也一样出现过故障,而且淘宝开展促销运营活动,是整个阿里的资源都调动起来:支付宝、阿里巴巴(内称B2B)、阿里云、淘宝等子公司都有专门的技术团队参与支持,活动开始之前就早早安排好值班的人员。而京东商城属于B2C型电子商务,无论物品种类、数量等,还是在线购物者都是无法比拟,而且内部还称信息部,这更加证明京东商城,还是类似传统型企业,技术的积累和接受过的挑战并没那么多,为此造成营销活动出现宕机的故障也在所难免,若是说找一个人承担责任的话,那么只能套用一句俗话:一切问题的发生都是管理不当造成的,那么这个责任应该是京东商城的信息部经理承担(注:互联网行业公司一般称技术总监CTO,像阿里巴巴是副总裁,他应该要有能力或意识提前预测可能发生的问题,以及组织架构师、开发人员、DBA、系统工程师等人员寻找应对或解决的办法。

我们继续围绕这一事件及京东商城刘强东先生微博透露的信息,先梳理知道或可猜测的信息:

(1). 单一品种:图书音像类,促销方式为折扣+满200元再打五折;

点评:折扣是其他图书类网站都有,且并不占优势,但是满200元再打五折非常诱人;

(2). 第一次营销活动就出现Server is toow busy的问题且超严重;

点评:技术人难得的挑战机会,结果是京东商城技术人的耻辱。

(3). 第一次营销活动搞砸之后,京东商城创始人刘强东要求增加三倍服务器,坚持促销的3个小时,且确保大家的订单能提交;

猜测:未必真添加3倍的服务器,若真增加了,说明之前使用的服务器数量太少,没重视此事情。

(4). 第二次营销活动依然出现Server is too busy,但是相比较稍好;

分析:部分网购者已经购买成功;系统有改进或优化;服务器也有增加;不少人放弃参加第二次的促销活动。

(5). 三小时促销活动订单为:数十万(注:具体数字不详),超过300W本书籍出售;

推测:订单数30W-50W之间,估计是40W订单出头。

(6). 事后补偿机制:20日内我们会给所有没抢到的老用户发放高额优惠券;

点评:不靠谱的做法,即使发放也不需要等待那么长时间,这也更加间接说明技术实力的薄弱。

(三) 围绕技术方面如何应对高并发

根据官方微博透露出售的书籍信息,及订单数量级,我们可以再大胆猜测大概有30W-50W的网络用户在三个小时促销期内参与购买,而且是分二天完成的,相信一天的促销时间段参与购买者的数字会更低一些,不过这对于一个B2C网站而言确实并发压力不小,假设一台Web服务器能支撑5000个并发,所有用户同时间点添加书籍到购物车中,那么需要600-1000台Web服务器。不过这只是个极端假设,真实的情况肯定不是这样。有几个点肯定容易成为瓶颈:购物车服务、MemCached服务、订单管理服务、支付服务、数据库服务,不清楚内部具体情况,所以只能进行猜测性分析:

(1). 京东商城采用购物车系统,方便网购客进行物品挑选,然后集中完成订单的模式,有区别于淘宝网的模式,为此购物车系统的压力将会非常大。购物车系统服务涉及大量的数据添加和显示操作,甚至修改和删除,数据必须考虑先要你用内存(例如:MemCached、Redis等)方式支持物品数据的增加、修改、删除,并异步更新到数据库中,因此购物车系统需要操作的内存缓存区最好能支持分布式部署和提供数据服务的模式,否则容易成为瓶颈,若是无法水平分布式的方式扩容,那必须进行垂直扩容,不得不考虑更换内存更大及性能更优秀的服务器支持;

(2).MemCached提供读服务是必须的且压力也会不小,但还必须考虑提供写操作,即数据先写入MemCached再队列方式同步到数据库;

(3).队列服务,涉及到一些数据的异步执行和排队等待等事件,在电子商务领域一样非常流行和成熟的技术,鄙人曾参与一个分布式队列项目的研发,达到可以在线部署、停止、调度、监控等功能,尤其是这种网购促销活动队列尤其重要,若是能有此类技术服务,会对整个系统的有序控制非常有帮助;

(4). 提供数据服务的数据库产品为SQL Server,这并不是意味着性能就差,关键是要做到:操作系统不需要的服务必须关闭,磁盘RAID要合理,数据库的设计要合理,索引组织结构要优化好,SQL Server 服务器端参数要配置和优化,重点借助Windows自带的工具就足够监控和分析数据库服务器的性能和瓶颈。主要是数据库服务器往往不容易进行拆分,而实现水平方向的分布式部署注释:SQL Server有一个分布式分区视图功能,可以轻易实现数据的拆分,且不需要应用做任何修改,只是性能相对而言会降低一点)。故可对于一些静态的数据提前预存到后端的缓存系统中,减少数据库服务器的压力,提高对网购者物品信息查询的响应速度;

(5). 提供Web服务的程序为.net编写的,一般做到水平扩展,然后再搭配LVS或F5(注释:听说京东商城使用F5)实现负载均衡设备即可,Web服务层面不会成为瓶颈。若是.net程序代码质量不高,则可能成为瓶颈,就需要更多的机器支持;实际上,.net和Java都是这样的,对程序员的编码水平相对要求较高,不是会写就行,代码质量必须保证很高系统效率才会高,否则写出来的代码会成为网站的瓶颈。

(6). 订单管理系统将会成为压力非常大的服务,需要合并订单和检查库存,分配订单到不同的仓库所在地等,建议只做订单常规的检查,至于订单分配到不同地方仓库处理等事情可以等活动结束之后的1-2个小时内再后台集中处理的模式;

(7).支付服务方面,京东商场有自己的物流配送服务,且提供在线支付和货到付款的模式,具体数字不详,网络上获得的京东商城货到付款比率高达90%;

小结:

曾经微博mysqlops上发过一段话形容“产品、运营、技术”的三角恋关系:成功的产品需要优秀的运营团队;好的运营团队也需要优秀的产品;再好的产品和运营,也要坚如磐石的技术作支撑,否则最多是一座小洋楼;再牛的技术人要是不能服务于产品和运营,就像深锁闺房的黄花大闺女。正确看待三者的关系,就是肯定我们大家的工作,公司或团队才可能取得巨大的成功!

这次大规模的促销毕竟是京东商城的第一次真正体验互联网网购压力,多少会存在预备不足的情况,以及运营部门和技术部门衔接的信息不畅或不到位的情况,关键是出现这些问题之后,是否能借助这些经验教训,进行深刻的对内性反思且发现存在的问题,是否在高位的管理者意识到技术将成为业务发展的瓶颈,毕竟京东商城的运营团队和产品团队已经做得非常棒了,而且B2C领域的市场占有率也非常高,接下来就是如何把这些优势如何发挥得更加明显,那么就需要技术支撑了,相信京东商城2010年至今从阿里系挖了不少技术人员,以及从其他公司搜刮了不少非常优秀的技术人,不至于愿意把他们束之高阁。若是京东商城想成为B2C平台,必须考虑投入资源和放权,让真正能结合业务发展需求且能把握技术方向的能人志士成为主导者,从而实现技术的革新,使其成为产品和运营的一把利剑。

(四)京东商城2012年招聘规划

前面围绕图书音像类满200元五折促销活动事件展开的分析和总结,并且分别从管理和技术的角度给出相关改进建议,我们本节谈一谈京东商城宏伟的2012年招聘计划,相关背景信息:京东商城现有人员大概1.3万名员工,2012年将招收2万名电子商务人才,补充公司发展需要,包括5000名新毕业大学生、1000名软件工程师和1000名有相关从业经历的行业人士。

对我们技术圈人员而言是一大盛事,各大公司都争相聘请更多数量的技术人才,肯定会把技术人员的薪资待遇提高,也许又可以向欧美正常的待遇靠近一步;理智地想一想,这样的虚假繁荣又能维持多久呢?就像团购行业,一开始团购行业的人才待遇风生水起,资本市场也加入这场游戏,谁又能想到最后的结局可能都玩完,反而被淘宝聚划算、大众点评团购等几大原本就有资源优势的公司后发制人,最后市场也做萎缩了,也就导致没有那么多企业生存下来,最后会有很多技术人员被裁掉,好像这样这样做对社会,对企业,对个人而言都不是好事情。

我们接着从企业业务发展需求角度分析,京东商城的业务,主要是自营业务平台,相信后续发展必然会考虑做B2C网购平台,以及自建的物流配送系统等组合在一起,相对于淘宝网的业务和挑战,依然是相差甚远,原因很简单:淘宝网上的注册网店和活跃用户的数量都非常庞大,而且其自己做很多帮助网店卖家如何经营、如何判断自家网店经营状况、营销等方面提供技术支持,也相当多的应用是第三方企业API函数调用的模式提供,也需要管理及监控,另外从订单量和交易额度而言,更加无法比拟,用一句话概括:淘宝网那么大的布局和业务需求,都不需要你所言的工程师数量,为何京东商城要考虑人海战术?

我们再从企业管理的角度分析,先大致罗列几点:

(1).招聘的应届生需要非常多的培训资源,而且需要确保培训的质量,只好要保证几个方面:技能培训,正确做事的方式,企业文化熏陶等方面;

(2).企业人数越来越多,不可避免地会出现企业文化稀释;

(3).部门内部,甚至部门与部门之间的利益或权利的争斗会越来越严重;

(4).正常事情的完成会涉及更多部门或人,而信息传递越来越困难,执行力可能越来越差;

(5).公司的管理组织架构和绩效考核管理等,都必须做相应的变化,不同的企业可能转变方式不太一样,转变的过程可能会出现很多意想不到的事情发展,容易出现严重的不公平性;

(6).技术人员一般都是有一定的技术追求的,若是没有事情可做就等于要废了他们,而京东商城未必有那么的业务发展的事情需要他们去承担,最后的结果可能是优秀的人才走了,剩下的是普通和混日子为主的雇员;

(7).雇佣大量员工,不论管理成本,日常办公等开销,还是最直接的薪资待遇开销,都将是非常客观的数字,而且薪资待遇低还很难吸引到优秀人才;

(8).在IT企业中,千万别把技术人员,当IT民工使用。若是聘请普通或平庸型的技术人才,会比优秀人才给企业带来的成本高得多,优秀人才(备注:指综合素质,人才肯定需要搭配的,莫钻牛角尖)不管是做事情的速度,还是完成的质量等各个方面都会远远超过其他类型人才,而且还可能给企业降低在管理、带宽、硬件、机房等设施方面的资金投入,并且赢得更好的用户体验;

小结:

企业的雇员及业务规模做大并不是万能的,重要的是企业要注重责任、诚信,踏实做好每一件事情,考虑企业发展的速度,尽量挖掘企业内部现有资源,并且补充必需资源,才能有长远的发展。

www.opensoce.com特别注解:据我个人的了解,阿里对运维人员的要求过于细分专业化,以至于他们的工程师更专注于自己细分的方向,而不擅长综合性的处理问题,这样的企业更注重各部门的协作,离开了协作,运维部门无法正常运转。曾经有位阿里的运维工程师到我这里应聘,除了他自己的方向,其他一概不会,而我们需要的是在运维的各个方向都有所涉猎、能够独立处理问题的工程师。这样就可以理解,为什么京东挖走了那么多阿里的运维工程师,如果对他们的分工协作安排不妥当的话(笔者猜测),就无法发挥其应有的作用。

(五)京东商场的云计算规划

看到京东刘强东先生及京东商城官方微博,提出京东商城也要做云计算,个人感觉到非常吃惊!不知道京东商城是要为上市做准备,还是为了面子工程或说为了国家提供的云计算补贴基金,还是京东商城有我们外面人都不曾可预计的庞大业务正在秘密研发或业务将以火箭速度增长呢?

以京东商城现在及未来的业务支撑点而言,不管从京东商城现在还是将来的业务规模看,都没有必要自己做云计算,或说提供云计算服务,国内的情况不能跟国外的Amazon等公司相比较,国内外的环境不一样,也不要跟阿里巴巴马云去比较,他是为自身的电子商务圈而服务,且已经形成规模和布局,不这么做可能违法减低其成本和维持其生态圈的运作,而且阿里巴巴已经具备提供云计算服务的硬件设施条件,以及业务发展需求,可以用一句话说:业务促动其必须考虑搞云计算服务,关于阿里巴巴提供云计算服务的个人看法阐述可以查阅阿里云飞天系统的技术架构

从目前的现状分析(例如:对于未完成抢购下单的用户奖励,需要20天的时间完成,动作太迟缓)及未来业务的发展,京东商城必须搞对内的分布式计算,其内部用户浏览物品信息、购物订单等数据累计到一定程度,就非常有价值,需要学会用数据佐证商业决策、运营活动的开展和产品的规划,以便决策者快速地分析企业业务发展现状,及时地分析自身网站上所产生的用户行为数据,帮助产品和营销的人员,更好地优化产品和用户购物体验,甚至还可以收集竞争对手的数据并加以分析帮助企业做出正确的商业决策。

(六)总结

京东商城B2C购物网站,在京东刘强东先生及管理团队的带领下,从单一的3C产品,发展到现在种类齐全,而且年交易额度也是超100亿元规模,发展的非常迅速,而且京东商城的产品和营销手段也越来越高明,虽然京东刘强东先生本人非常低调,但是京东商城却是越来越高调地做事情,而且做事情的手笔对竞争对手越来越有威胁性,本人相信京东商城会继续领跑独立的B2C电子商场网购业务,但是京东商场还有内功需要修炼,尤其随业务迅速发展,技术壁垒可能会成为其内部的一道坎,但是早已经从外部挖来大量经验丰富的员工,只要给予他们舞台和资源上的支持,相信京东商城下一次促销活动有办法规避出现大规模的Server is too busy事件。

转载自MySQLOPS 数据库与运维自动化技术分享

目前有 3 条留言 其中:访客:2 条, 博主:1 条

  1. 无名小卒 : 2012年03月01日21:47:10  -49楼

    写的如此认真,不评不行,呵,刚才那个就想评论了。很专业……开发商就是不一样……哈 对iphone硬是有更好的应用,我喜欢! soce是 source? 🙂

  2. 银杏树苗价格 : 2011年12月28日23:52:30  -48楼

    真的是挺赞成的,不过话说回来。。

给我留言

您必须 [ 登录 ] 才能发表留言!

×
#