как освободить кеширование, которое использует Mongodb? - PullRequest
17 голосов
/ 17 декабря 2010

Mongodb использует файл сопоставления памяти, когда я использую его долго, я вижу, что свободной памяти осталось меньше по команде 'free -m' в ubuntu, и кэширование часто используется. Тогда убить Mongodb кеширование все еще стоит много? как я могу освободить кеширование?

Ответы [ 3 ]

30 голосов
/ 19 декабря 2010

MongoDB будет (по крайней мере, кажется) использовать много доступной памяти, но на самом деле она оставляет за VMM операционной системы указание освободить память (см. Кэширование в документации MongoDB. )

Вы можете освободить любую и всю память, перезапустив MongoDB.

Однако в некоторой степени MongoDB на самом деле не «использует» память.

Например, из документов MongoDB Проверка использования памяти сервера ...

В зависимости от платформы вы можете увидеть сопоставленные файлы как память в процесс, но это не строго правильный. Unix top может показывать больше память для Mongod, чем на самом деле подходящее. Операционная система ( менеджер виртуальной памяти, в частности, в зависимости от ОС) управляет памятью где "файлы с отображением в памяти" проживают. Этот номер обычно отображается в программе типа "free -lmt".

Это называется "кэшированная" память.

MongoDB использует алгоритм кэширования LRU ( Наименее недавно использованный ), чтобы определить, какие «страницы» нужно выпустить, вы найдете дополнительную информацию в этих двух вопросах ...

7 голосов
/ 22 февраля 2017

Начиная с версии 3.2, MongoDB использует WiredTiger в качестве механизма хранения по умолчанию.Предыдущие версии использовали MMAPv1 в качестве механизма хранения по умолчанию.

В WiredTiger MongoDB использует как внутренний кеш WiredTiger, так и кеш файловой системы.В MongoDB 3.2 внутренний кеш WiredTiger по умолчанию будет использовать больший из: 60% ОЗУ минус 1 ГБ или 1 ГБ.Для систем с объемом оперативной памяти до 10 ГБ новый параметр по умолчанию меньше или равен значению по умолчанию 3.0 (для MongoDB 3.0 внутренний кэш WiredTiger использует либо 1 ГБ, либо половину установленного физического ОЗУ, в зависимости от того, что больше).Для систем с объемом оперативной памяти более 10 ГБ новый параметр по умолчанию больше значения 3.0.


для ограничения кэша wiredTriggered Добавьте следующую строку в файл .config:

wiredTigerCacheSizeGB= 1

0 голосов
/ 08 сентября 2016

В чем заключалась моя проблема:

Поскольку приложение развертывалось на компьютере с очень долгого времени, и исторические данные не были удалены, что привело к увеличению размера базы данных, используемой с приложением.Mongodb занимает почти вдвое больший объем доступных данных в оперативной памяти, которая не оставляет свободной памяти для запуска приложения.

Состояние памяти перед удалением данных:

[root @ ip-172-31-1-173 журналов] # free -m всего использованного свободного общего доступного буфера / кэша. Mem: 15630 11462 146 732 4021 3207 Обмен: 0 0 0

Состояние памяти после удаления данных:

[root @ ip-172-31-1-173 mongo] # free -m всего использованного свободного общего буфера / кэша. Mem: 15630 5849 5234 788 4545 8763 Swap: 0 0 0

С WiredTiger MongoDB использует обавнутренний кеш WiredTiger и кеш файловой системы.

Изменено в версии 3.2: Начиная с MongoDB 3.2, внутренний кеш WiredTiger по умолчанию будет использовать большее из следующих значений:

60% of RAM minus 1 GB, or
1 GB.

ДляВ системах с объемом оперативной памяти до 10 ГБ новый параметр по умолчанию меньше или равен значению по умолчанию 3.0 (для MongoDB 3.0 внутренний кэш WiredTiger использует либо 1 ГБ, либо половину установленного физического ОЗУ, в зависимости от того, что великоr).

Для систем с объемом оперативной памяти более 10 ГБ новый параметр по умолчанию больше, чем параметр 3.0.

Через кеш файловой системы MongoDB автоматически использует всю свободную память, которая неиспользуется кешем WiredTiger или другими процессами.Данные в кеше файловой системы сжаты.

Вам также необходимо восстановить базу данных при очистке исторических данных, чтобы сохранить размер используемого кеша.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...