2014-02-04 1 views
2

У меня есть процесс mongod, работающий на сервере webfaction с 512 МБ ОЗУ. У меня есть база данных MongoDB с двумя коллекциями размером 10 МБ и 2 ГБ. Всякий раз, когда я запускаю запрос в своих коллекциях через оболочку mongo, использование ОЗУ становится чрезвычайно высоким, и сервер автоматически блокируется хостинг-провайдером.Проблемы с использованием памяти сервера mongo db

Есть ли способ контролировать использование памяти сервером mongod? Что я делаю не так? PS: пожалуйста, направляйте меня, поскольку я новичок в MongoDB и немного экспериментирую.

+0

В чем ваш запрос, возможно, вам придется добавить некоторые индексы. Mongo вынуждает тянуть всю эту коллекцию в ОЗУ для ее поиска. – Matt

+1

Предоставление схемы данных и типа запроса очень помогло бы. Также, как уже упоминалось, присутствуют индексы. – Jinxcat

+0

Данные в основном содержат профиль facebook и нравятся пользователям. – graphicmist

ответ

1

Это проблемная установка, и вы не можете сделать это со стороны кода. Проблема в том, что ваше приложение убивается, потому что ему требуется оперативная память. MongoDB очень жадна с ОЗУ и будет пытаться получить то, что может. Из-за того, что вы избегаете больших наборов результатов и больших объемов данных, вы, вероятно, можете немного задержать эту проблему, но зачем вам использовать базу данных веб-масштаба в первую очередь, если это невозможно?

Используйте провайдера, который дает вам фиксированный объем оперативной памяти, поэтому MongoDB знает, сколько оперативной памяти он может выделить. Это может быть не быстро, но, по крайней мере, это не просто уничтожит сервис из ниоткуда.

Даже если у вас очень хорошие индексы, по крайней мере индексы должны вписываться в ОЗУ. Если для ОС требуется 100 МБ (что очень консервативно), у вас осталось только 400 МБ для хранилища данных 10 ГБ. Реально, вероятно, осталось только 200 МБ для фактического хранения данных в ОЗУ, и это кажется на нижнем уровне для базы данных 10 ГБ.

Даже тогда не указывайте свое программное обеспечение на излишне сильные ограничения. Виртуальная машина с 1-2 ГБ оперативной памяти не так дорого, но, что более важно, убедитесь, что оперативная память гарантирована и исправлена ​​(нет «повышения» ОЗУ).

+0

понял, есть ли способ ограничить монго использование определенного объема ОЗУ? – graphicmist

+0

Не совсем, см. Http://stackoverflow.com/questions/6861184/is-there-any-option-to-limit-mongodb-memory-usage – mnemosyn

+0

Это печально. ну, я думаю, я могу сделать ограниченное тестирование на webfaction, мне нужен хороший сервер конфигурации – graphicmist

 Смежные вопросы

  • Нет связанных вопросов^_^