0

有人能告诉我为什么 Mongo 在有 2GB 可用内存且 dataSize 目前大约 4GB 且文档数略低于 500 万时消耗的内存不超过 300-400MB 吗?

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

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

编辑猫 /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
4

1 回答 1

1

如果你运行free -mor cat /proc/meminfo,你应该能够看到内存使用的细分。

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

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

于 2013-03-12T11:57:08.577 回答