BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

FourSquare经历两次宕机

| 作者 郑柯 关注 3 他的粉丝 发布于 2010年10月9日. 估计阅读时间: 2 分钟 | 如何结合区块链技术,帮助企业降本增效?让我们深度了解几个成功的案例。

美国东部标准时间10月4日和5日,互联网业界最有名也是最具价值的地理位置服务网站FourSquare经历了两次宕机事件,第一次长达11个小时,第二次也有6个小时。第一次宕机问题解决之后,FourSquare技术团队在官方博客上发布帖子“这一次可真是郁闷了”,详细描述了该次发生问题的全过程。

FourSquare使用MongoDB作为后台数据存储,他们保存了海量的用户签到(check-in)记录,并且使用用户ID对数据进行了分片(sharding),希望数据可以平均分布到不同的数据库片(shard)之中。4日上午11时开始,FourSquare发现某一个数据库片的写入操作出现异常,在接下来的一个半小时,他们采取各种负载均衡措施,均不起效。他们希望引入一个新的数据库片,并在不关闭网站的情况下,将过载的数据库片中的部分数据转移到新的数据库片中。然而,该操作没有成功,同时直接导致整个网站关闭。不仅如此,将数据向新的数据库片迁移也没有腾出原先预期的存储空间数量。(他们认为“数据碎片化”和“使用用户ID切分”是两个主要原因。)接下来五个小时的各种努力也没有起效,网站仍然没有起来。

4日下午6时30分,他们决定重新建立数据库分片索引,这可以解决内存碎片化和可用性的问题。这个过程耗时5个小时。到晚上11时30分,网站恢复。而且由于他们之前做了足够的安全保障和备份工作,没有任何数据丢失。

FourSquare团队在该帖子中提到,将会采取三种措施避免类似状况:

  1. 进一步与MongoDB的开发者们密切合作。
  2. 改变运维流程,防止过载发生。
  3. 寻找服务降级的方法,关闭某些服务,以避免整个网站全部受影响宕机。

然而,刚刚过了几个小时,FourSquare再次经历了第二次宕机⋯⋯

最新的博客帖子这样说明第二次发生问题的过程:

简单来说,还是发生了同样的事情:数据库过载,解决方案还是手动重新分配用户签到数据,以确保没有数据库过载,然后重启网站;在将近6个小时之后,我们终于恢复了服务。

除了FourSquare自己的讲述之外,MongoDB的开发公司10gen的CTO和联合创始人Eliot Horowitz也分析了整个过程,请关注InfoQ对于该事件的后续报道。

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

关注! by 崔 康

这种实战案例很值得学习!

继续关注, by zenk zenk

记得以前在项目里面使用mogodb的时候,觉得这东东暂时还不够成熟,硬盘IO以及内存使用上都还不够好

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

2 讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT