在我们的 CentOS-07 服务器上,mongodb 的内存利用率出现峰值。它有 64 GB 的 RAM。这是一个独立的 mongodb 实例,它没有运行任何应用程序,并且启用了内务管理脚本来保持只有相关数据。我们没有对数据进行索引。磁盘上的数据总大小为81 GB。在我们尝试启用复制之前没有看到这个问题,节点设置一直使用高内存因此被禁用,然后我们提出了一个新的独立实例 mongo。自从我们尝试重新启动 mongo 服务器后,内存使用量一直没有下降,但没有成功。mongodb 有什么理由使用这么多内存吗??下面是一个链接到使用的内存使用快照从站点服务器。
mongo 版本是 2.6.5
Image link
最佳答案
这并不奇怪。见Memory Use MMAPv1 存储引擎的文档中的部分(这是 MongoDB 2.6 使用的):
With MMAPv1, MongoDB automatically uses all free memory on the machine as its cache. System resource monitors show that MongoDB uses a lot of memory, but its usage is dynamic. If another process suddenly needs half the server’s RAM, MongoDB will yield cached memory to the other process.
启用复制后使用量激增也不足为奇,因为听起来您拥有一个完全填充的数据库,然后添加了一个副本成员。这意味着副本成员需要执行来自该节点的数据的初始同步,这将需要读取每个文档,从而“准备”MongoDB 的缓存。
关于mongodb 内存使用量突然飙升,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38636996/