MongoDB的内存消耗低

时间:2013-03-12 10:55:39

标签: mongodb

有人可以告诉我为什么当2GB可用时Mongo不会消耗超过300-400MB的内存,而目前dataSize大约是4GB且有500万以下的文件?

即使处理大量文档的查询,内存消耗也不会激增。我在同一台服务器上运行的其他几个进程很少但是我正在看New Relic,内存消耗从不超过500MB。

在这种情况下不知道是否重要,但服务器是用KVM虚拟化的。我们使用64位版本,因此没有32位限制。

编辑 cat / proc / meminfo

MemTotal:        2051488 kB
MemFree:          205420 kB
Buffers:            8472 kB
Cached:          1346496 kB
SwapCached:        43224 kB
Active:          1208548 kB
Inactive:         551952 kB
Active(anon):     162448 kB
Inactive(anon):   243196 kB
Active(file):    1046100 kB
Inactive(file):   308756 kB
Unevictable:           0 kB
Mlocked:               0 kB
SwapTotal:       4194300 kB
SwapFree:        4041128 kB
Dirty:               812 kB
Writeback:             0 kB
AnonPages:        397844 kB
Mapped:           222180 kB
Shmem:                72 kB
Slab:              40728 kB
SReclaimable:      28304 kB
SUnreclaim:        12424 kB
KernelStack:        1800 kB
PageTables:        13832 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:     5220044 kB
Committed_AS:    1404372 kB
VmallocTotal:   34359738367 kB
VmallocUsed:        9888 kB
VmallocChunk:   34359728471 kB
HardwareCorrupted:     0 kB
AnonHugePages:         0 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
DirectMap4k:       53228 kB
DirectMap2M:     2043904 kB

1 个答案:

答案 0 :(得分:1)

如果您运行free -mcat /proc/meminfo,您应该可以看到内存使用情况的细分。

缓冲区与使用多少RAM来缓存磁盘块有关。缓存类似于缓冲区,除了它是读取文件的缓存页面。

如果这些值很高,则表明您的预读设置太大而且MongoDB无法使用剩余的内存 - 性能下降。