use*_*807 4 memory mongodb ubuntu-12.04
我仅使用 mongodb 插入文档。没有为我使用的集合创建索引。但我发现 Mongodb 使用的内存越来越高。机器有 20GB RAM,已完全使用。我想知道这是什么原因,这正常吗?
这里有关于 MongoDB 如何使用存储和内存的精彩讨论:
http://docs.mongodb.org/manual/faq/storage/
具体到您的情况,Mongo 内存映射数据和索引所在的文件(默认情况下位于 /data/db 目录内的文件),这意味着这些文件被映射到操作系统的虚拟地址空间,然后每当 MongoDB 访问页面(任何文件的一部分)该页面将被拉入 RAM 并一直保留在那里,直到使用操作系统提供给 mongod 进程的所有 RAM(此时最近最少使用的页面将从 RAM 中换出)。
您正在插入数据,因此您正在写入数据文件 - 您正在写入的那些页面需要位于 RAM 中(mongo 写入文件,但由于它们是内存映射的,因此它可以像磁盘存储一样与内存交互)。如果 mongod 使用 20GB 以上的 RAM,则意味着您的数据加上索引(加上其他一些开销)为 20GB 或更多。