cat case/PM-2013-0107.md

Foursquare 2013 MongoDB 内存耗尽

P1 · MongoDB OOM 崩溃,服务跨两日累计约 17 小时不可用

summary

2013 年,Foursquare 的 MongoDB 因内存耗尽(OOM)崩溃,查询模式局部性差,导致服务跨两日累计约 17 小时不可用。

timeline

负载与查询模式使工作集超出内存;MongoDB 进程 OOM 被杀,重启后再次被打满;团队通过扩容内存、优化查询与增加缓存逐步恢复。

root_cause

数据工作集大于可用内存,且查询访问局部性差,迫使大量磁盘随机 IO,MongoDB 在内存压力下被 OOM killer 终止。

amplifiers

缺乏容量余量与查询缓存层,故障期间重试风暴进一步压垮数据库;恢复依赖手动调优。

mitigation

扩容内存、引入缓存、优化热点查询、增加副本;建立容量预警。

lessons

有状态存储需预留内存余量并监控工作集;为突发查询加缓存与限流。

checklist

内存与工作集监控;OOM 预警;查询缓存;容量水位告警。