mongodb 内存使用量突然飙升

标签 mongodb memory centos

在我们的 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/

相关文章:

c++ - 在程序临时数组中使用内存映射文件?

centos - 如何找到我的 Chef 服务器的版本

node.js - 使用 `clone` 和 `Object.assign` 方法在 Mongoose 中克隆/扩展模式有什么区别?

node.js - NodeJS/MongoDB - 避免 mongoose 节省错误的当前时间

c# - 用于 C# 类层次结构的 MongoDb 顺序 int id 生成器

javascript - 如何在 meteor 中进行临时收藏?

c++ - 检测进程内存是否被操纵?

循环中的 C++ 对象引用

php - "The stream or file "laravel.log "could not be opened: failed to open stream: Permission denied"

ruby - 我无法通过 rvm 安装 ruby