Как получить текущий размер рабочего набора MongoDB

9

Из документа сказано

«Для лучшей производительности большая часть вашего активного набора должна умещаться в оперативной памяти».

Так, например, мой db.stats()дай мне

{
"db" : "mydb",
"collections" : 16,
"objects" : 21452,
"avgObjSize" : 768.0516501957859,
"dataSize" : 16476244,
"storageSize" : 25385984,
"numExtents" : 43,
"indexes" : 70,
"indexSize" : 15450112,
"fileSize" : 469762048,
"ok" : 1
}

Какое значение является working set size?

Говард
источник

Ответы:

9

SO вопрос / ответ связан квантами в комментариях является правильным, «Рабочий набор» в основном объем данных и индексов , которые будут активно / используется в вашей системе.

Вы не сможете понять, db.stats()что это будет, если не думаете, что вам понадобится весь набор данных и весь индекс в ОЗУ. То есть вы можете определить максимальный рабочий набор для этой базы данных, но не фактический активный рабочий набор. Максимум это сумма:

  1. dataSize - общий размер данных, хранящихся в этой базе данных.
  2. indexSize - общий размер всех индексов, созданных в этой базе данных.

В вашем случае этот максимум будет примерно 30,45 МБ с учетом вставленного вами результата.

Для отслеживания фактического использования памяти я бы рекомендовал комбинацию цифр db.stats()и графиков памяти (в частности, резидентной памяти), доступных в бесплатном инструменте мониторинга - MMS .

Обновление (08.04.2013):

Версия 2.4 добавила Оценщик размера рабочего набора к команде serverStatus - это всего лишь оценка, но она может использоваться в качестве руководства и для проверки того, имеют ли другие приведенные выше цифры и оценки смысл для вашего экземпляра MongoDB.

Обновление (сентябрь 2016 г.):

Прошло три года с моего первоначального ответа, и все стало намного сложнее - обычно получение размера ваших данных и ваших индексов остается хорошей отправной точкой. Но выяснение вещей в MongoDB теперь будет зависеть от того, какой механизм хранения вы используете. Кроме того, версия 3.0 удалила оценщик рабочего набора, связанный выше для MMAP, как часть работы по блокировке уровня сбора (см. SERVER-13783 ). Теперь есть (например) статистика кеша для WiredTigerдвижка в качестве замены, если вы сделали переход на новый движок. Для MMAP, общая рекомендация состоит в том, чтобы смотреть на страничных ошибок Метрика как прокси - сервер для того , что ваши данные установки в памяти или нет.

Адам С
источник
На самом деле я MMSуже использую , но я не уверен, на какую цифру смотреть.
Говард
Вообще, резидентная цифра на графике памяти здесь наиболее актуальна. Со временем она будет увеличиваться и занимать всю доступную оперативную память (с более старыми данными, выгружаемыми по мере необходимости для новых данных, которые будут выгружаться), если ваш набор данных значительно больше оперативной памяти. Если нет, и набор данных довольно статичен, он найдет более низкий уровень и зависнет там. Максимальное значение, которое я обрисовал в общих чертах выше, будет наибольшим объемом оперативной памяти, которую отдельная база данных будет занимать как часть этой цифры.
Адам С
1
Команда serverStatus больше не включает оценку размера рабочего набора, начиная с MongoDB 3.0. docs.mongodb.com/manual/reference/command/serverStatus
Винс Боудрен
1
Вещи сильно изменились за 3-4 года. Я оставил оригинал и добавил обновление, чтобы покрыть некоторые опции в более новых версиях.
Адам С