打错一个字母瘫痪半个互联网!亚马逊 S3 宕机事件缘由 - 开源中国社区
打错一个字母瘫痪半个互联网!亚马逊 S3 宕机事件缘由
两味真火 2017年03月04日

打错一个字母瘫痪半个互联网!亚马逊 S3 宕机事件缘由

两味真火 两味真火 发布于2017年03月04日 收藏 49 评论 79

2月28号,号称「亚马逊AWS最稳定」的云存储服务S3出现“超高错误率”的宕机事件。

接着,半个互联网都跟着瘫痪了。

一个字母造成的血案

AWS在昨天给出了确切的解释:一名程序员在调试系统的时候,运行了一条原本打算删除少量服务器的脚本,结果输错了一个字母,导致大量服务器被删。为了修复这个错误,亚马逊不得不重启整个系统(在此之前已经几年都没有重启过了),最终导致了震惊全球的Amazon S3宕机4个小时事件。

我想这名程序猿当时的表情应该是这样的

曾经有人计算过,AWS每宕机一分钟,对亚马逊造成的损失是$66,240美元...而这还不包括那些依靠AWS来运行自家服务的公司们的损失。所以这次接近4小时的宕机造成多大的损失,只能请大家自行脑补了。

程序员的世界就是这样的不近人情,一丁点儿错误就足以酿成大错。在这次“一个字母造成的血案”之前,刚刚发生了Gitlab程序猿用错一条命令误删了整个数据库的悲剧。再久一点以前,欧洲宇航局的的火星探测器因为传感器失灵了仅仅一秒钟,就造成探测器在火星表面坠毁,历时数年的探测计划功亏一篑。

所以,当你身边的程序员为了一点点小事较真的时候,你一定要理解:魔鬼都藏在细节里啊!

当S3宕机时,你才明白AWS多么强大

几年前,Google.com曾有一次宕机了一个小时。在那一个小时的时间里,整个互联网的流量减少了40%。当时有人感慨:Google一家就是半个互联网。如今,“半壁江山”的江湖地位似乎要归属于亚马逊了。

AWS是云计算领域全球的领导者,而S3又是AWS历史最久的服务,可以说是AWS的基石。很多AWS提供的其他服务都依赖于S3云存储,比如EC2,Lambda 和 EBS 等,所以这次宕机影响巨大。据最近的统计显示,全球共有148213个网站和121761个独立域名在使用AWS S3服务。

就拿这次事故来说,很多人一觉起来发现手机里的歌听不了,电影看不了,股票不能交易,App也没法下载,就连家里的智能电器都纷纷罢工(主页君家里的电子门锁都失灵了!)云计算听上去离生活很远,其实离我们很近

这次S3宕机影响到无数家公司和服务

在这里罗列了几个著名的:

  • Apple App Store & icloud

  • Airbnb

  • Expedia

  • Netflix

  • Quora

  • Amazon Echo

  • Amazon.com

  • Nasdaq


就连AWS自己用来公布服务状态的 AWS Dashboard 都受到了影响,在一段时间内只能通过Twitter账户来发布更新状态。这次S3宕机事件的影响范围之广,可见一斑。

“打错一个字母瘫痪半个互联网”是怎样的感受?

在今天亚马逊披露了这起事故背后的原因后,很多人心里都会有一个疑问:

这个倒霉的程序员会被开除吗?

关于这一点,虽然主页君肯定没法做出准确的判断,但还是愿意给出我们的猜测:不会。

首先,这名程序猿打错命令有没有责任?肯定有。但是,在处理高度可靠的云服务时,每一次操作都应该按照严格的程序,每一个命令都要经过足够的审核。除非这名程序员在操作过程中因为偷懒省略了一些必要的步骤,否则,这次事故更多是系统的责任,因为系统没有足够的机制来防止错误的发生。人,都是会犯错的,只有机器不会。

其次,oncall(值班)的程序员一边操作着影响巨大的的系统,一边还需要争分夺秒的解决问题,肩上的压力之大难以想象。虽然这次事故确实是由于一个打错的字母造成的,但如果事故发生后,作为云服务领航者的亚马逊不是勇敢的承担这笔学费,而是把锅甩给某一个程序员身上,那就太让人寒心了。

我甚至敢断言:如果亚马逊真的做出这样的决定,那么他们在日后的招聘过程中会遇到很大的困难——每个程序员都会三思:我会不会成为下一个背锅的人?

当然,如果这哥们(也可能是姐们)

真的因此被解雇了,想想看——我打错了一个字母,就瘫痪了半个互联网 

这牛逼也够吹一辈子了!

最后,主页君想说:程序员这行真的不容易,做云服务的尤其如此,大家且行且珍惜。对受到这次事故影响而心惊胆战了好几几天的程序员们说一句:加油,你们挺住!

稿源:西雅图IT圈

本站文章除注明转载外,均为本站原创或编译。欢迎任何形式的转载,但请务必注明出处,尊重他人劳动共创开源社区。
转载请注明:文章转载自 开源中国社区 [http://www.oschina.net]
本文标题:打错一个字母瘫痪半个互联网!亚马逊 S3 宕机事件缘由
分享
评论(79)
精彩评论
57
说多少次了,我敲代码的时候不要打扰我,打错了一个字母可能导致半个互联网瘫痪的!:worried:
32
难怪华为删除老程序员,年纪大了手容易抖啊。
24

引用来自“lolcat”的评论

说多少次了,我敲代码的时候不要打扰我,打错了一个字母可能导致半个互联网瘫痪的!:worried:
这就是女朋友跟你分手的原因吧
16
我有预感, 人类世界最终是毁灭在一个程序员手上的
6
哈哈, 这个程序员老了以后可以给孙子讲故事了h
最新评论
0

引用来自“席尔瓦”的评论

曾经晚上加班一下小心删除过生产数据库的路过

引用来自“LazyHiccup”的评论

生产数据库?你在制造的公司里面吗?

引用来自“seamon”的评论

你根本就不是个真正的程序员
0
天网摁错了一个回车键,毁灭了整个世界
0
曾经数据库迁移的时候。。把俩个线上数据库数据合并了(游戏)。。当时俩个服务器全挂了。。没备份。。:expressionless:
0
意思是不要惹程序员!
1

引用来自“席尔瓦”的评论

曾经晚上加班一下小心删除过生产数据库的路过

引用来自“LazyHiccup”的评论

生产数据库?你在制造的公司里面吗?
你根本就不是个真正的程序员
1

引用来自“侯坤林”的评论

曾经delete数据时忘记加where
我都是先用select,查询出结果核实三遍无误后,再小心翼翼地改成delete。。。
0
这是第二次了,继gitlab之后
0

引用来自“席尔瓦”的评论

曾经晚上加班一下小心删除过生产数据库的路过
生产数据库?你在制造的公司里面吗?
0
我只想默默的敲一个命令drop database
0
好文啊
2
曾经delete数据时忘记加where
0
哈哈。正常。程序员背锅。
0
机器也会出错,电压不稳的时候....
1
曾经晚上加班一下小心删除过生产数据库的路过
0
故意的^_^
1
果然干正事的时候不能听歌
0
mark
0
万恶的rm -fr *!!
最好的办法是把 rm 命令修改成必须输入两次路径匹配并无法force操作的命令,我不想告诉你为什么要这么做~
0
干过数据库的飘过。。。
0
如果打错几个字母导致机器活了那才可怕
顶部