10 月 23 - 25 日,QCon 上海站即将召开,现在购票,享9折优惠 了解详情
写点什么

MongoDB 创始人 Eliot Horowitz 分析 FourSquare 宕机原因

  • 2010-10-09
  • 本文字数:1033 字

    阅读完需:约 3 分钟

为了提高响应速度,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 的迁移不是连续的。

2010-10-09 20:015839
用户头像

发布了 479 篇内容, 共 176.3 次阅读, 收获喜欢 53 次。

关注

评论

发布
暂无评论
发现更多内容

黑龙江等保测评:在日常生活中,网络安全的防护策略

黑龙江陆陆信息测评部

低代码平台未来发展趋势有哪些?

伤感汤姆布利柏

Apache Doris 3.0.4 版本正式发布

SelectDB

数据库 数据湖 数据分析 Doris #大数据

AI 口语陪练 APP 会话场景设计

北京木奇移动技术有限公司

软件外包公司 AI口语练习 AI英语学习

哈尔滨等保备案后,我们还需要做哪些其他的安全措施?

黑龙江陆陆信息测评部

实验室管理系统(源码+文档+讲解+演示)

深圳亥时科技

Bybit 14.6 亿美元被盗能否避免?解析 Polkadot 的离线签名安全机制!

One Block Community

‌2025全球大语言模型巅峰对决:ChatGPT-4.5、Gemini Ultra、Llama3、通义千问等10大模型全维度解析

测试人

人工智能

洋酒品牌数字化案例:数据与算法加持营销增长

奇点云

大数据

论AI与鸭血粉丝汤: 一场美味的“数据烹饪”之旅

权说安全

AI 网络安全

炸裂!这款社交圈子论坛系统源码让你的社区运营如鱼得水

DUOKE七七

php MySQL uniapp

用友BIP生态全新升级,推进中国和全球企业软件产业生态进入AI时代

人称T客

阿里云Milvus 2.5:支持全文检索,1次查询实现文本+向量双精度匹配

阿里云大数据AI技术

人工智能 大数据 全文检索 Milvus rag

AI是否能真正理解人类情感?从语音助手到情感机器人

天津汇柏科技有限公司

人工智能 AI

充电桩运营管理系统(源码+文档+讲解+演示)

深圳亥时科技

智慧园区管理系统(源码+文档+讲解+演示)

深圳亥时科技

多链结构与互操作性能否助力 Polkadot 迈上 DeAI 快车道?

One Block Community

AI 去中心化

CST软件分析:超表面---经典蘑菇型结构的AMC特性与EBG特性

思茂信息

cst cst操作 CST软件

“码农”成长记,渐渐不想「砸」电脑了

秃头小帅oi

全面落地信创战略 从构建身份基础设施开始

芯盾时代

身份安全 信创 iam

智慧能源管理系统解决方案(Word)

金陵老街

智慧能源 智慧能效

迎接AI+SaaS的黄金十年,金蝶准备好了

人称T客

Apache IoTDB 树表双模型直播回顾(上)

Apache IoTDB

MongoDB创始人Eliot Horowitz分析FourSquare宕机原因_架构_郑柯_InfoQ精选文章