Идеально ли, что MongoDB использует 150 МБ памяти? - PullRequest
6 голосов
/ 07 февраля 2011

Это мой первый проект, который использует MongoDB.

Я разместил его на линоде (VPS, который использует XEN) и проверяю использование памяти с помощью "top".

Процесс mongod использует около 150 МБ памяти. Там не было никаких подключений к нему, когда я проверил. Я использую RockMongo, чтобы управлять им. Моя основная статистика базы данных -

Size - 464m 
Storage Size - 83.99m
Data Size - 66.4m
Index Size - 49.33m
Collections - 5
Objects - 584850

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

Выход db.serverStatus();

Примечание. Я перезапустил mongod перед запуском db.serverStatus();, и использование памяти составило 40 МБ.

{
   "retval": {
     "version": "1.6.5",
     "uptime": 790,
     "uptimeEstimate": 783,
     "localTime": "Mon, 07 Feb 2011 00: 51: 04 -0500",
     "globalLock": {
       "totalTime": 790027671,
       "lockTime": 376381,
       "ratio": 0.00047641495838188,
       "currentQueue": {
         "total": 0,
         "readers": 0,
         "writers": 0
      }
    },
     "mem": {
       "bits": 64,
       "resident": 38,
       "virtual": 957,
       "supported": true,
       "mapped": 288
    },
     "connections": {
       "current": 2,
       "available": 9598
    },
     "extra_info": {
       "note": "fields vary by platform",
       "heap_usage_bytes": 152448,
       "page_faults": 0
    },
     "indexCounters": {
       "btree": {
         "accesses": 1,
         "hits": 1,
         "misses": 0,
         "resets": 0,
         "missRatio": 0
      }
    },
     "backgroundFlushing": {
       "flushes": 13,
       "total_ms": 1,
       "average_ms": 0.076923076923077,
       "last_ms": 0,
       "last_finished": "Mon, 07 Feb 2011 00: 50: 54 -0500"
    },
     "cursors": {
       "totalOpen": 0,
       "clientCursors_size": 0,
       "timedOut": 0
    },
     "opcounters": {
       "insert": 0,
       "query": 57,
       "update": 0,
       "delete": 0,
       "getmore": 0,
       "command": 46
    },
     "asserts": {
       "regular": 0,
       "warning": 0,
       "msg": 0,
       "user": 0,
       "rollovers": 0
    },
     "ok": 1
  },
   "ok": 1
}

Мой друг ведет свой блог WordPress на линоде с таким же количеством оперативной памяти (1024 МБ). Его использование MySQL показывает всего 20,48 и ок. 12 пользователей на своем сайте, как «всегда на связи» (как всегда),

Это заставляет меня чувствовать, что MongoDB - не лучший выбор для меня, и я должен был придерживаться MySQL!

Спасибо всем.

Ответы [ 2 ]

10 голосов
/ 07 февраля 2011

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

По большей части это «использование» этой памяти для кеша, что значительно ускоряет процесс.

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

Тем не менее, в некоторой степени MongoDB не очень активно «использует» память ... подробнее читайте в этом ответе ..

Как освободить кеширование, которое использует Mongodb?

6 голосов
/ 07 февраля 2011

Управление памятью Soley до ОС.

Чтение

http://blog.mongodb.org/post/101911655/mongo-db-memory-usage

В настоящее время практически невозможно повлиять наиспользование памяти .... и упомянуто: узнайте о файлах с отображением в памяти и не смешивайте использование памяти с отображенными в памяти файлами с фактическим использованием памяти.

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