Я использую монго-DBv1.8.1. Моя память сервера составляет 4 ГБ, но DB монго использует больше чем 3 ГБ. Есть ли в DB монго опция ограничения памяти?.
Нет никакой причины ограничить кэш MongoDB как по умолчанию, процесс mongod возьмет 1/2 памяти на машине и не больше. Механизмом устройства хранения данных по умолчанию является WiredTiger. "С WiredTiger MongoDB использует и WiredTiger внутренний кэш и кэш файловой системы".
Вы, вероятно, смотрите на вершину и предполагаете, что монго использует всю память на Вашей машине. Это - виртуальная память. Используйте свободный-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
это работало на меня на экземпляре AWS, по крайней мере, очистить кэшируемое монго памяти использовало. после этого Вы видите, как Ваши настройки имели эффект.
ubuntu@hongse:~$ free -m
total used free shared buffers cached
Mem: 3952 3667 284 0 617 514
-/+ buffers/cache: 2535 1416
Swap: 0 0 0
ubuntu@hongse:~$ sudo su
root@hongse:/home/ubuntu# sync; echo 3 > /proc/sys/vm/drop_caches
root@hongse:/home/ubuntu# free -m
total used free shared buffers cached
Mem: 3952 2269 1682 0 1 42
-/+ buffers/cache: 2225 1726
Swap: 0 0 0
Добавление к вершине проголосовало за ответ, в случае, если Вы находитесь на низкой машине памяти и хотите настроить wiredTigerCache
в MBS вместо ГБ целого числа, используйте это -
storage:
wiredTiger:
engineConfig:
configString : cache_size=345M
Источник - https://jira.mongodb.org/browse/SERVER-22274