Там какая-либо опция состоит в том, чтобы ограничить mongodb использование памяти?

Я использую монго-DBv1.8.1. Моя память сервера составляет 4 ГБ, но DB монго использует больше чем 3 ГБ. Есть ли в DB монго опция ограничения памяти?.

58
задан 28 July 2011 в 19:03

3 ответа

Нет никакой причины ограничить кэш 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
0
ответ дан 1 November 2019 в 13:59

это работало на меня на экземпляре 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
0
ответ дан 1 November 2019 в 13:59

Добавление к вершине проголосовало за ответ, в случае, если Вы находитесь на низкой машине памяти и хотите настроить wiredTigerCache в MBS вместо ГБ целого числа, используйте это -

storage:
 wiredTiger:
  engineConfig:
    configString : cache_size=345M

Источник - https://jira.mongodb.org/browse/SERVER-22274

0
ответ дан 1 November 2019 в 13:59

Другие вопросы по тегам:

Похожие вопросы: