阅读更多

4顶
0踩

移动开发

转载新闻 Foursquare长达11 个小时宕机

2010-10-09 11:26 by 正式编辑 chuiyan 评论(2) 有3894人浏览
    前几天 Foursquare 经历了长达 11 个小时的宕机,没错,11 个小时。网站官方的解释是 Shard 负载不均匀造成后续的连锁反应。很多人都知道 Foursquare 在线的 DB 是 MongoDB,今天又看到 10gen (MongoDB的开发与支持团队)的 Eliot Horowitz 在得到 Foursquare 许可后,通过邮件组详细介绍了宕机的过程:Foursquare outage post mortem,不用说,也有为 MongoDB 辟谣的意味在里面。

    读罢 10gen 团队的介绍(或者说解释)之后,发现这是一个很好的研究样本。值得分享。

    为了提高响应速度,Foursquare 使用 MongoDB 存储 Check-in 的数据已经有一段时间了。这部分数据的数据库起初跑在一个 66GB 内存的 Amazon EC2 单实例上(全部在内存里),两个月前,出于对容量增长的考虑,迁移到两台 Shard 集群上。每个 Shard 机器都是 66GB 内存,为了冗余,每个 Shard 都有复制到 Slave 实例。迁移的目标是所有的 Check-in 数据都保存在内存中。数据根据 ID 分成 200 个 Shard 分片,两台机器各占一般,也就说联机数据在每台机器上各使用 33GB 的内存。两个月相安无事。

    问题来了,因为 Shard 算法导致的数据分散不均衡,其中一台(Shard0)数据增长到 67GB(另外一台 50GB),超过了 66GB 的限制,读写部分分散到磁盘上,性能急剧下降。从而,网站宕机。

    首先尝试增加第三台 Shard 机器,上线后开始迁移,读取从三台进行,Shard0 的数据迁移到 5% 的时候,但是写操作还是让 Shard0 宕机了。这个时候发现Shard0 存在数据碎片(data fragmentation),即使数据迁移走,还是会占用原来的内存。每个Check-in 文档大约占用 300 字节,而 MongoDB 是 4KB 的页(Page),也就说十几个文档会填满一个页,而迁移 5% 反而造成了页更加稀疏,并不是将页全部删除。

    这个时候已经到了第二天,随着网站全面宕机,技术团队开始用 MongoDB 的 repairDatabase() 功能来对数据库进行压缩,因为数据库太大和 EBS 慢,也因为 repairDatabase() 不能充分利用多核CPU 的能力,这个过程耗费了 4 个小时。之后这 5% 的内存空间终于释放出来,系统重新上线。

    随着 Shard0 修复,第三台成功上线,进而添加了更多的 Shard 服务器,现在数据已经更加的均衡,通过在Slave上运行 repairDatabase(),然后将其切换到 Master ,每台 Shard 内存占用缩减到 20GB左右。整个故障时间已经延续了 11 小时之多。

    产生问题的主要原因就是系统过载,前面介绍每台 Shard 承载原来 50% 的压力,到了问题发生的时候,单台 Shard 的负载已经超过 Shard 之前的系统负载,这时候已经积重难返了,在容量的临界点增加新系统资源,必然导致更多的停机时间。暴露了 Foursquare 团队在容量规划方面的不足之处,或许也因为业务增长太快了吧。另外,内存碎片化的问题在没有宕机之前,技术团队应该没考虑过这个问题,如果文档的大小超过 4K,碎片化问题就不严重了,这是特定应用场景造成的特定问题。10Gen 现在已经着手研究如何进在线压缩(online compaction)。再次,Shard 键值的顺序和插入顺序是不同的,这造成了迁移数据的时候 Chunk 的迁移不是连续的。

    这个过程给我们的启示是:最近 NoSQL 已经成为一个热词,类似 MongoDB 这样的新事物当然值得尝试,但是不能冒进,因为驾驭起来并非易事。仅仅能够使用是不够的,系统没出问题一切都好,一旦出了异常,有足够的技术力量(设想一下 Foursquare 得不到 10gen 团队的支持会如何?) 支持么?在极端情况下如何控制? 如果回答不了这个问题,那么还应该暂缓。最好的办法就是..."等待"。

    给我的另一个感慨是 Amazon 在云计算领域已经真的成为一个赢家,而且越来越得到 Web 2.0 Startup的信赖。前面说的 66GB 内存,应该指的是EC2 的 "High-Memory Double Extra Large Instance",可提供的最大内存是 68.4 GB 。CPU 和内存能力都是可以接受的,存储方面的性能似乎还有点不足,也就是其中的 EBS ,指的是 Amazon Elastic Block storage。
4
0
评论 共 2 条 请登录后发表评论
2 楼 dohkoos 2010-10-11 12:51
http://www.dbanotes.net/arch/foursquare_outage.html
1 楼 lixinyang 2010-10-09 12:30
转载应注明出处!

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • Borland Delphi一句话帮助

    <br />  1. 如果想你的程序能够正确处理异常情况的话,请引用SysUtils.pas单元,否则即使程序使用了try...except...也不能正确捕获异常。 <br /><br />   2. 字符串常量数组的初始化 <br />const constarray:array [0..2] of string=(‘first’,’second’,’third’); <br /><br />  3. 结构体初始化 <br />type Tstructinit=record <br />

  • delphi一句话帮助

    1.       如果想你的程序能够正确处理异常情况的话,请引用SysUtils.pas单元,否则即使程序使用了try。。。except。。。也不能正确捕获异常。 2.       定义常量字符串的一种方式 resourcestring     aa='aaaa'; raise Exception.CreateRes(@aa); 3.       字符串常量数组的初始化 const

  • 大家说说我这工作算什么职位啊?

    工作内容: 1. 设计效果图 如果不是客户提供或是公司内部系统; 2. 切图 3. 转换为html ...虽然算不上高手,但是就目前所遇到的工作,都可以一一实现; 5. java 主要是一些server...

  • 工作3年以上的程序员现在都在做什么工作?

    我是做Java开发的,我说说我自己工作三年时候的转他。 1、 在我当了程序员三年之后,我对开发这事儿已经非常熟练了,熟练主要表现在两个方面: 1. 提给我的业务需求,我已经能毫不费劲的形成技术思路。 2. 写...

  • IT行业都有哪些职位?工作内容及升职路线

    感谢作者 作者:xdyl ... 互联网行业的薪资水准相对较高,刚入行一个月,半年,或者一年...那么,互联网行业究竟有哪些职位呢,又分别适合哪些传统行业转型? 1.产品 2.UI 3.CSS 4.JS 5.后端(Java/php/python

  • 爬虫学到什么程度可以去找工作? 这是我给你的一个建议!

    这篇文章会说说我自己的心得体验,关于爬虫、关于工作,仅供参考。 学到哪种程度 暂且把目标定位初级爬虫工程师,简单列一下吧: (必要部分) 语言选择:一般是了解Python、Java、Golang之一 熟悉多线程编程、...

  • 这就是我不建议去外包公司开发的原因?

    在国内,IT开发公司基本可以分为国内自助研发和外包企业(项目外包或人员外包),有些人总是会问我,到底要不要选择外包企业进行工作,我个人觉得:如果自己的能力不是很突出的话,基础知识点也不是很牢固,基本算是...

  • 我面试到底问什么?

    最近太多的同学给我留言说「现在毕业季了,迫切希望张哥写一篇关于Android面试的文章」,好吧,今天终于兑现承诺了,这篇文章为你们而写。首先,你们要明白,关于面试每个公司都不一样,甚至同一家公司不同的面试官...

  • 7年加工作经验的程序员,从大厂跳槽出来,遭遇了什么?

     当初在北京的4年多,是LZ工作中最精彩的一段经历,这也是为何LZ的小说以LZ在北京打拼时的真实经历为背景,因为那是一段难忘而又精彩的时光。  16年偶得一个大厂的offer,因此LZ就毅然决然的来到了杭州,来到杭州...

  • 在字节跳动工作是什么样的体验?

    我心里已经无话可说了,原来就值一个最低薪啊,给的薪酬范围里你还算房补钱,那我要是因为租房距离不合适没有公司这份房补钱,那这也怪我咯?就算干的不是程序员的技术活,不是公司最核心的职位,那也不能拿其他职位...

  • 应届生参加工作,什么事情越早知道越好?

    Joey想和大家说的就是这句话,这句话也是我之前在一起考教师的学员群里看到的,毕业多年,再回头看这句话时,真是觉得受益匪浅。 为什么Joey说,选择之前要慎重呢? 因为应届生在参加工作之前,有很多的就业选择...

  • 月薪30K+的电子工程师应具备什么?

    为什么这里把月薪定义在30K,因为我觉得,30K是比较资深的工程师的合理薪酬,薪水再高的,估计一般都会有个经理什么的头衔了,就不能简单的算做是工程师了。 老板不会无缘无故给我们加薪,但我们必须具备让老板给...

  • 996工作制,你能扛多久?

    但账不是这么算的,员工每天正常工作8小时的情况下,精力已经消耗的差不多了,额外的这2个小时产生的成本是呈几何倍数增长的,更多的显性隐性成本其实是外溢到了整个社会,所以最大的成本其实是由我们整个社会来买单...

  • 量子通信,到底是什么工作原理?

    戳蓝字“CSDN云计算”关注我们哦!作者 |小枣君责编 | 阿秃今天,小枣君要和大家聊的是“量子通信”。最开始计划写这个专题的时候,小枣君的内心是很纠结的。鲜枣课堂的目的,就是传递“...

  • 工业界和学术界最大区别是什么?

    作者|蛤蟆仙人、小米君、留德华叫兽来源|https://www.zhihu.com/question/332602866整理 | MLNLP宅实验室专心科研的生活自由但无硬核的工作像...

  • 零食社交 or 甜蜜陷阱?说说公司那些免费提供的零食饮料

    说起来是件轻松愉快的事情,可是,偏偏有人因为这些小福利离职,还有人因为它们损害了健康……对于这些随便吃、随便喝、随便拿的东西应该采取什么样的态度才能于己有利? 很多公司在普通零食之上还有“限时供应”的...

  • 在字节跳动工作是怎样的?

    我心里已经无话可说了,原来就值一个最低薪啊,给的薪酬范围里你还算房补钱,那我要是因为租房距离不合适没有公司这份房补钱,那这也怪我咯?就算干的不是程序员的技术活,不是公司最核心的职位,那也不能拿其他职位...

  • 为什么我不推荐大家去外包公司

    其实大家每天心里都像明镜一样的明白“低技术含量的外包没有前途”,好多人都认为外包没有技术,其实这种思想不对,国外有大量的高端技术外包业务等着我们干,但是反问一句“你们能干吗?”,现在大部分的公司都是...

  • 工作经验到底是个什么东东?工作经验从哪里来?

    工作经验到底是个什么东东?工作经验从哪里来? 原文地址:http://blog.csdn.net/zhoufoxcn/archive/2010/06/07/5652166.aspx&lt;br /&gt;最近网上一直比较热闹,“淋巴哥”老师拿出高丽棒子那种可以证明屈原、...

Global site tag (gtag.js) - Google Analytics