Нет причин ограничивать кэш MongoDB, так как по умолчанию процесс mongod будет занимать половину памяти на машине и не более. Механизм хранения по умолчанию - WiredTiger. «С WiredTiger MongoDB использует как внутренний кеш WiredTiger, так и кеш файловой системы».
Вы, вероятно, смотрите сверху и предполагаете, что Mongo использует всю память на вашем компьютере. Это виртуальная память. Используйте бесплатно -m:
total used free shared buff/cache available
Mem: 7982 1487 5601 8 893 6204
Swap: 0 0 0
Только когда доступная метрика обнуляется, ваш компьютер выгружает память на диск. В этом случае ваша база данных слишком велика для вашей машины. Добавьте еще один экземпляр mongodb в ваш кластер.
Используйте эти две команды в консоли mongod, чтобы получить информацию о том, сколько виртуальной и физической памяти использует Mongodb:
var mem = db.serverStatus().tcmalloc;
mem.tcmalloc.formattedString
------------------------------------------------
MALLOC: 360509952 ( 343.8 MiB) Bytes in use by application
MALLOC: + 477704192 ( 455.6 MiB) Bytes in page heap freelist
MALLOC: + 33152680 ( 31.6 MiB) Bytes in central cache freelist
MALLOC: + 2684032 ( 2.6 MiB) Bytes in transfer cache freelist
MALLOC: + 3508952 ( 3.3 MiB) Bytes in thread cache freelists
MALLOC: + 6349056 ( 6.1 MiB) Bytes in malloc metadata
MALLOC: ------------
MALLOC: = 883908864 ( 843.0 MiB) Actual memory used (physical + swap)
MALLOC: + 33611776 ( 32.1 MiB) Bytes released to OS (aka unmapped)
MALLOC: ------------
MALLOC: = 917520640 ( 875.0 MiB) Virtual address space used
MALLOC:
MALLOC: 26695 Spans in use
MALLOC: 22 Thread heaps in use
MALLOC: 4096 Tcmalloc page size