[译文] Facebook 停机事件详细技术内幕

鉴客
 鉴客
发布于 2010年09月27日
收藏 0

此文是 Facebook 官方的一个宕机说明,由 Robert Johnson 发布于 2010年9月23日17:29。

下面是全文的中文翻译:

今天早上Facebook发生宕机事故,导致你们中的很多人不能访问本站达2.5小时左右。这是我们在4年里遇到的最严重的一次宕机事故,我们首先要对这次事件表示歉意。我们同时也想把这次事故发生的更详细的技术内幕透露出来,和大家一起分享这次大教训。

导致这次事故演变成如此严重的事件的关键问题出在一个倒霉的错误状态处理操作上。一个用来检查配置数据的自动执行程序试图修复这个错误结果却带来了更糟糕的破坏。

这个自动执行程序的目的是检查缓存中的配置数据是否有效,并从持久存储库里取出数据更新到缓存。这项工作对处理缓存上的临时问题运行正常,但当持久数据库失效时,它就出问题了。

今天我们对一个配置数据的持久副本做了一点修改,让它显示为无效。这意味着每一个客户机都能看到这个无效数据,并且试图修复这个数据。因为修复过程牵涉到对数据库集群的查询,一下子这每秒钟百万次的查询迅速把集群累垮。

更糟糕的是,每次一个客户机试图查询数据库失败都认为是有一个无效数据,缓存里的相应的键值会被删除。这意味着即使最初的问题被解决了,请求查询的 数据流仍然不会停止。直到数据库无法为其中的某些请求进行查询,而这又会给自己招致更多的查询。我们进入了一个循环反馈圈,使数据库无法恢复正常。

让这个循环反馈圈停下来的办法是很不情愿的——我们必须把所有通向数据库集群的请求全部停下来,也就是关闭网站。当数据库恢复正常,问题的根源被清除后,我们逐渐的开放用户对网站的访问。

这样今天我们使得网站恢复了运行,我们现在已经关闭了那个试图纠正配置数据的系统程序。我们正在对这个配置系统做新的设计,会参考Facebook上其它系统的设计模式,让其能够优雅的处理循环反馈圈和瞬间峰值。

我们再次对网站宕机表示歉意,我们希望你们能理解,我们对Facebook网站的性能和可靠性非常的重视。

[英文出处]:More Details on Today's Outage [Facebook官方说明,需翻墙访问]
[中文翻译]:外刊IT评论

本站文章除注明转载外,均为本站原创或编译。欢迎任何形式的转载,但请务必注明出处,尊重他人劳动共创开源社区。
转载请注明:文章转载自 OSCHINA 社区 [http://www.oschina.net]
本文标题:[译文] Facebook 停机事件详细技术内幕
加载中

最新评论(6

yak
yak
缓存雪崩?
麦田大圈圈
麦田大圈圈
类似的问题,我们也遇到过。
全唐轩
全唐轩
中国大陆地区网友表示:我们这里一定影响都没有,一切照常!是不是你们对我大陆地区网友存在歧视的现象:为啥我们这里一直都能“登录链接”?
Hazelnut
Hazelnut
有些问题在设计时根本想不到
RainJ
RainJ
天朝表示没有压力!~~
返回顶部
顶部