鹿黑客是如何击垮微博服务器的?
2017/10/9 13:37:14 浅黑科技
“服务器稳定了,岳父喊我喝酒去……” 敲下这几个字,小丁松了一口气。
戴着新郎胸花,结婚当天加班,滋味不一般。

几十分钟前,他接到公司电话,被告知服务器可能遭遇大量流量涌入,瘫痪。
这位年轻的技术小哥放下酒杯,淡定地推了推镜框,从双肩包里抽出电脑,顾不上背后亲友们的惊愕,飞速敲打起来。

没有时间解释了!此时网络的另一端,是千万网友心急如焚的等待。微博服务器挂,客服发出紧急公告:
目前客户端无法正常刷新、评论等多个页面无法正常显示的问题,工程师已在排查……
“排查个毛啊”,微博CEO王高飞忍不住吐槽。

事实证明,激增的流量并不是来自黑客攻击,所有线索指向一条微博:

没错,只一条微博,就让数亿网民一定时间内无法正常使用自己的微博APP,只一条微博,就让承载月活3亿多用户的微博服务器崩了。
那么问题来了,为什么明星公开恋情,程序员小哥遭殃?为什么一条微博就把服务器搞瘫了?服务器瘫痪之后又发生了什么?来,看看他们怎么说:
Let’s Rock !
1.一言以蔽之:挤的。由于原理和黑客发起的DDoS攻击类似,因此这次事件崩溃被称之为“鹿黑客发起的人肉DDoS攻击”。
@徐怀远,工程师
100个座的餐馆,平时高峰期才50个人,伙计又准备了100个可以临时搭建的餐位,就算来200个人也可以挤一挤,伙计吹牛说来500个也小意思,结果来了1000个强行挤进店的客人,于是连餐桌上都站满了人。

在应对流量比平时峰值高一个数量级的事件时,一定要有计划有作战方案,阿里的双十一,如果不是提前那么多天备战和演练,给他来个突发的,一样药丸。
这种事情不是一方努力可以做好的,云计算也不是说扩容就能几分钟内扩容完,你突然要求几分钟内新增1000个主机,对云服务商也是很大的考验。
况且,大家都在放假,开发和运维就那么几个人值班,你看阿里双十一上千人严阵以待,守个通宵,可见准备工作和人海是多么重要。
2.猜测:一条微博具体是怎么把微博压垮的?
@知乎匿名网友
根据目前已有的信息猜测是数据库被压垮了。
不负责任的未经验证的猜测(画图水平有限,省略了部分过程,但是从上下两个过度的箭头数,大致表达了很多请求是读且未压到数据库,将就看吧[手动捂脸.jpg]):

微博这样的网站,之前经历过几次热门事件,我相信在爆发热点新闻的时候,微博会暂时牺牲一点数据准确性来保证关键服务可用。也就是说,光读请求很难压垮微博。
根据事故时的微博点赞数、转发数、评论数、评论的回复数、评论的点赞数、转发的评论转发点赞数等的量,微博极可能是由于事发当时需要写入数据库的请求太多(写行为峰值可能达到了几十万甚至更高)。
以及,大部分写都会落到同一条微博上,而且某些写操作还需要触发相应的其他写行为(回复评论需要通知评论者、点赞需要进关注者 feed 等),数据库压力过大扛不过来,最终跪了一会儿。
3.解决:阿里云免费提供一千台服务器扩容,用了几个小时后又退了。
根据微博CEO王高飞的说法,事情发生后,微博临时加了一千台阿里云服务器抗住短时间内的流量压力,用了几个小时,访问量降下来之后就把服务器退了。
由于事件传播范围广,阿里云还顺带给微博免了个单,权当是打了个广告。

细心的网友还算了一笔账,发现解决微博解决问题租用的服务器并没花多少钱。
@石桥码农
每台按使用4小时计算,2核,1GB基础流量,约合3元,这1000台也仅3000+的费用。(简单算了算,大约3元每台4小时的使用费用)

此次鹿晗公开恋情微博带来的网络流量若发生在工作日,想必对于微博的网络架构和扩容能力来说并不是什么问题,只是事情发生在国庆假期,才杀了所有工程师一个猝不及防。
据说,鹿晗得知微博技术小哥结婚当天加班因自己的微博而加班后,专门托人转达歉意,其经纪人也在朋友圈表示要请加班的小哥吃饭。或许,这也算是婚礼的意外之贺了。

总之,经此一役,鹿黑客一战成名,程序员圈无人不知,皆叹服于鹿饭之力。恐怕节后第一天,微博便马上开会扩大服务器备用空间,他日其他明星想要挤垮微博,怕是越来越难...

投票

http://weixin.100md.com
返回 浅黑科技 返回首页 返回百拇医药