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

Rak*_*kar 2 replication mongodb

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

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

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

UPDATE

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
Run Code Online (Sandbox Code Playgroud)

洞察:

  1. 主服务器数据库大小为50GB,其中30GB由索引填充.
  2. 主服务器有7GB Ram,而辅助服务器有3.1GB Ram.
  3. 两台服务器都是64位机器,分别运行Debian/Ubuntu.
  4. 在两台服务器上运行Mongo 2.0.2

注意:我最近在Jira-Mongo网站上看到了一个类似的问题 - 目前还没有答案.

Ada*_*ord 5

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

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

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

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