即使在MongoDB Collection上完成创建索引,内存使用率仍然是99%

时间:2014-02-25 09:53:16

标签: mongodb

在MongoDB上进行索引编制时。现在,我们在数据库中拥有近350 GB的数据,并将其部署为AWS EC2中的Windows服务。

我们正在为一些实验做索引。但是每次运行索引命令时,内存使用率都会达到99%,即使在索引完成后,内存使用情况仍然保持不变,直到我重新启动服务。

该实例具有30 GB的RAM和SSD驱动器。现在我们将数据库设置为独立(直到现在还没有分片)。我们正在使用最新版本的MongoDB。

任何与此相关的反馈都会有所帮助。

谢谢,

Arpan

1 个答案:

答案 0 :(得分:3)

这是MongoDB的正常行为。

MongoDB尽可能地抓取它可以缓存每个访问文档的所有RAM。向集合添加索引时,需要读取每个文档一次以构建索引,这会导致MongoDB将每个文档加载到RAM中。然后它将它们保存在RAM中,以防您以后想要访问它们。但MongoDB不会蹲下RAM。当另一个进程需要内存时,MongoDB会自愿发布它。

the FAQ中解释了这一点:

  

MongoDB需要大量内存吗?

     

不一定。这当然是   可以在具有少量可用RAM的计算机上运行MongoDB。

     

MongoDB会自动使用机器上的所有可用内存   缓存。系统资源监视器显示MongoDB使用了很多   内存,但它的用法是动态的。如果突然需要另一个过程   在服务器的RAM的一半,MongoDB将为另一个提供缓存的内存   过程

     

从技术上讲,操作系统的虚拟内存子系统可以管理   MongoDB的记忆。这意味着MongoDB将使用尽可能多的可用内存   尽可能根据需要交换到磁盘。具有足够内存的部署   在RAM中适应应用程序的工作数据集将达到最佳效果   性能

     

另请参阅:FAQ: MongoDB Diagnostics以获取其他问题的答案   关于MongoDB和内存的使用。