这里需要很大的帮助,因为这会影响我们的生产实例。
其中一个副本服务器由于内存不足而失败(请参阅下面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
洞察:
主服务器数据库大小为50GB,其中30GB由索引填充。
主服务器有7GB RAM,而辅助服务器有3.1GB RAM。
这两个服务器都是64位机器,分别运行debian/ubuntu。
在两台服务器上运行Mongo 2.0.2
注:
我最近在Jira Mongo的网站上看到了类似的issue has been created——还没有答案。
最佳答案
这些实例上是否启用了交换?虽然mongodb操作通常不需要它,但它可以防止进程在遇到oom情况时被内核杀死。这里提到:
http://www.mongodb.org/display/DOCS/Production+Notes#ProductionNotes-Swap
引用的问题是在完全重新同步期间发生的,而不是正在进行的生产复制-这也是您正在做的吗?
一旦事情稳定下来,看看mongostat或mms中的res内存,如果超过或接近3gb,你应该考虑升级次内存。
关于mongodb - MongoDb副本服务器因内存减少而被杀?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9922491/