MongoDb副本服务器因内存减少而被杀?

时间:2012-03-29 09:21:19

标签: mongodb replication

这里需要大量帮助,因为这会影响我们的生产实例。

其中一个副本服务器由于内存不足而失败(参见下面kern.log中的一块)

kernel: [80110.848341] Out of memory: kill process 4643 (mongod) score 214181 or a child
kernel: [80110.848349] Killed process 4643 (mongod)

更新

kernel: mongod invoked oom-killer: gfp_mask=0x201da, order=0, oom_adj=0
kernel: [85544.157191] mongod cpuset=/ mems_allowed=0
kernel: [85544.157195] Pid: 7545, comm: mongod Not tainted 2.6.32-318-ec2

透视:

  1. 主服务器数据库大小为50GB,其中30GB由索引填充。
  2. 主服务器有7GB Ram,而辅助服务器有3.1GB Ram。
  3. 两台服务器都是64位计算机,分别运行Debian / Ubuntu。
  4. 在两台服务器上运行Mongo 2.0.2
  5. 注意: 我最近在Jira-Mongo网站上看到了一个类似的issue has been created - 目前还没有答案。

2 个答案:

答案 0 :(得分:5)

您是否在这些实例上启用了交换?虽然mongoDB操作通常不需要它,但是当你遇到OOM情况时,它可以防止进程被内核杀死。这是在这里提到的:

http://www.mongodb.org/display/DOCS/Production+Notes#ProductionNotes-Swap

引用的问题是在完全重新同步而不是正在进行的生产复制期间发生的 - 您正在做的是什么?

一旦你保持稳定,用mongostat或MMS查看你的Res内存,如果超过或接近3GB你应该考虑升级你的辅助。

答案 1 :(得分:0)

我有类似的问题。要检查的一件事是你有多少个开放式连接。运行lsof命令以查看与mongod进程关联的打开文件。尝试禁用日记功能,看看是否看到较少数量的打开文件。如果是这样,请让副本赶上然后重新启用日记功能。这可能有所帮助。添加交换也应该有帮助,或者如果可能的话暂时上升RAM。