MongoDB没有使用所有可用的RAM


9

我在mongo集群中存储了大约200 GB的数据。运行mongo的实例之一上的物理内存为8GB。没有任何其他后果在此实例上运行。据我所知,根据Mongo的文档(例如:http : //www.mongodb.org/display/DOCS/Checking+Server+Memory+Usage),这意味着mongod进程应使用约100%的可用的物理内存。但是,如果您查看top命令的以下输出,您会发现mongod实例仅使用2GB的常驻内存,并且有2GB的可用物理内存完全可用,根本没有使用。

有人可以向我解释这种行为吗?为什么会有2GB的可用内存?

top 输出:

top - 23:19:43 up 89 days, 20:05,  2 users,  load average: 0.41, 0.55, 0.59
Tasks: 101 total,   1 running, 100 sleeping,   0 stopped,   0 zombie
Cpu(s):  2.0%us,  1.3%sy,  0.0%ni, 93.9%id,  2.6%wa,  0.0%hi,  0.1%si,  0.0%st
Mem:   8163664k total,  6131764k used,  2031900k free,    54976k buffers
Swap: 16771848k total,    10604k used, 16761244k free,  5367700k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                                                             
 1401 mongodb   20   0  174g 2.0g 1.9g S   23 26.2  18070:55 mongod
 ...

系统信息:

$ uname -a
Linux aluminum 2.6.32-31-server #61-Ubuntu SMP Fri Apr 8 19:44:42 UTC 2011 x86_64 GNU/Linux

笔记:

  • 在该集群中还有另一个实例,其中mongod的行为符合我的预期,并利用了所有可用内存。
  • 查看mongostat似乎一直存在一些页面错误,因此使用的内存量应该不断增长:
  • (我在mongodb用户google组上问了同样的问题,但没有得到答复。)

什么Linux发行版?是32位还是64位?(编辑你与输出问题lsb-release -a,并uname -a请)
Philᵀᴹ

谢谢。已添加,uname但我尚未lsb-release安装。
克里斯·

您是否意外下载了MongoDB的32位版本?32位Mongo实例的最大大小为2GB。
亚伦

@ BryceAtNetwork23不; 我们的mongodb总数肯定超过2GB(实际上是几百个演出)。
克里斯·W

@ChrisW他表示最大内存大小-而不是数据库大小。似乎可以很好地解释2GB。
rfusca

Answers:


5

常驻内存大小表示该mongod进程实际触及的内存页数。如果那大大低于可用内存,并且数据超过了可用内存(您确实如此),则可能是根本没有主动触摸足够多页面的情况。

要确定是否是这种情况,应运行free -m,输出应如下所示:

free -m
             total       used       free     shared    buffers     cached
Mem:          3709       3484        224          0         84       2412
-/+ buffers/cache:        987       2721
Swap:         3836        156       3680

在我的示例中,缓存并没有接近总数,这意味着,不仅mongod没有接触足够多的页面,而且文件系统缓存甚至还没有被从磁盘上读取的页面完全填充。

一种快速的补救方法是touch命令(在2.2中添加)-在大型数据集上应谨慎使用,因为即使数据太大而无法容纳,它也会尝试将所有内容加载到RAM中(导致大量磁盘IO和页面错误)。它肯定会有效地填满内存:)

如果您的缓存值接近可用的总数,那么您的问题是,从磁盘读取到内存中的大量页面与mongod进程无关(因此未被触摸)。预先准备好这种差异的候选人。我已经在其他地方详细介绍了该特定主题 ,因此如果需要,我将把这两个答案链接起来以供将来阅读。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.