2012-08-28 2 views
1

Я просто восстанавливаю базу данных, которую я сбросил несколько минут назад, чтобы внести некоторые изменения. Mongorestore занимает около 100% процессора и гораздо больше времени, чем ожидалось. Я думал, это может быть из-за индексов, которые я создал, но проблема такая же при восстановлении даже одной коллекции. Коллекция насчитывает около 314 МБ и имеет около 185000 документов. Обычно этого не происходит. Это может быть из-за меньшего дискового пространства в моей системе, но это тоже 11 ГБ. Может кто-нибудь мне помочь, какая проблема?MongoRestore занимает больше времени и cpu, чем ожидалось

Примечание: Я делаю вещи от клиента монго. Водитель не включен.

+2

Можете ли вы уточнить, является ли процесс mongorestore принятием 100% -ного процессора или является mongod, который вы вставляете в прием 100% -ного процессора? Если это mongod, то запуск mongotop и mongostat должен дать вам лучший взгляд на то, что делает здесь работу. Кроме того, было бы неплохо увидеть, есть ли что-то, что имеет отношение к журналу mongod, и опубликовать его, если так –

+1

Эй, Адам, спасибо за ответ. Я думаю, проблема решена, это связано с размером файла журнала mongodb. У меня был один файл в течение многих дней, из-за этого его размер значительно увеличился. :) –

ответ

0

Как указано в комментариях, что это было связано с лесозаготовок, то я бы предложил взять пару шагов:

Первое, вращение использование журнала. Это можно сделать с помощью команды в базе данных или путем отправки сигнала SIGUSR1 в процесс, поэтому его очень легко списать или включить в качестве задания cron на регулярной основе. Более подробная информация здесь:

http://www.mongodb.org/display/DOCS/Logging#Logging-Rotatingthelogfiles

Во-вторых, проверить уровень протоколирования. Начиная с -v = log level 1; -vv = log leve 2 и т. д. Вы можете настроить его как при запуске, так и во время выполнения. Для настройки времени выполнения, можно использовать setParameter command:

// connect to the database or mongos 
use admin; 
// check the log level 
db.runCommand({getParameter : 1, logLevel: 1}) 
{ "logLevel" : 0, "ok" : 1 } 
// set it higher 
db.runCommand({setParameter : 1, logLevel: 1}) 
// back to default levels 
{ "was" : 0, "ok" : 1 } 
db.runCommand({setParameter : 1, logLevel: 0}) 
{ "was" : 1, "ok" : 1 } 

Наконец, вы можете также запустить с --quiet сократить некоторые из сообщений также.

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