Машина зависает, когда mongoDB db.copyDatabase(...) принимает всю оперативную память

Когда я пытаюсь скопировать базу данных с одного сервера mongoDB на другой (около 100 ГБ), процесс демона mongo занимает 99% доступной оперативной памяти (Windows 64 бит 16 ГБ). В результате система становится очень медленной и иногда неустойчивой.

Есть ли способ избежать этого?

MongoDB 2.0.6

Ответ 1

Альберт.

MongoDB - это очень "приложение в ram". Mongo имеет всю вашу память базы данных, предназначенную для использования, но обычно только самые последние используемые данные будут в ОЗУ (называемые вашим рабочим набором), и mongo выйдет на страницу, чтобы получить какие-либо данные не в ОЗУ по мере необходимости. Обычно поведение mongo состоит только в том, чтобы иметь столько, сколько нужно в ОЗУ, однако, когда вы делаете что-то вроде DB Copy, все данные необходимы - таким образом, mongod потребляет весь ваш баран.

Идеального решения для этого нет, но если отчаянно необходимо, вы можете использовать WSRM http://technet.microsoft.com/en-us/library/cc732553.aspx, чтобы попытаться ограничить объем потребляемой RAM по этому процессу. Это приведет к тому, что копия займет больше времени и может вызвать другие проблемы.