Как рассчитать размер кэша WiredTiger в контейнере docker? - PullRequest
0 голосов
/ 02 апреля 2020

Мы запускаем процессы MongoDB mongod в контейнерах Docker в Кубернетесе с четкими ограничениями памяти.

Я пытаюсь правильно настроить процессы mongod для наложенных ограничений памяти.

Это информация, которую я могу получить из документов:

Эта информация немного неясна.

Я оставляю значения по умолчанию для размера кэша WiredTiger или я устанавливаю его как «значение меньше, чем объем оперативной памяти, доступной в контейнере»? Насколько ниже должно быть это значение? (более высокое значение, чем значение по умолчанию, также противоречило бы совету не увеличивать его выше значения по умолчанию)

1 Ответ

0 голосов
/ 02 апреля 2020

По умолчанию кеш WiredTiger позволяет использовать чуть меньше половины общего объема ОЗУ в системе.

Обычно процесс определяет общий объем ОЗУ автоматически, запрашивая базовую операционную систему.

В случае контейнера Docker, которому было выделено 16 ГБ ОЗУ, но который работает на хост-компьютере с ОЗУ 128 ГБ, системный вызов выдаст 128 ГБ. По умолчанию в этом случае будет 63 ГБ, что, очевидно, вызовет проблему.

В общем:

  • Используйте значение по умолчанию в ситуациях, когда системный вызов сообщает об истинной памяти, доступной в окружающая обстановка. Это включает в себя «голое железо», большинство виртуальных машин, облачных провайдеров и т. Д. c.
  • В контейнерах, где объем памяти, сообщаемый системным вызовом, не отражает общий объем, доступный для контейнера, вручную выполните расчет для что было бы по умолчанию, если бы он сделал, и вместо этого используйте это значение.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...