我在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组上问了同样的问题,但没有得到答复。)
谢谢。已添加,
—
克里斯·
uname
但我尚未lsb-release
安装。
您是否意外下载了MongoDB的32位版本?32位Mongo实例的最大大小为2GB。
—
亚伦
@ BryceAtNetwork23不; 我们的mongodb总数肯定超过2GB(实际上是几百个演出)。
—
克里斯·W
@ChrisW他表示最大内存大小-而不是数据库大小。似乎可以很好地解释2GB。
—
rfusca
lsb-release -a
,并uname -a
请)