我只是恢復一個數據庫,我甩了幾分鐘後做出一些更改。 Mongorestore佔用了大約100%的CPU,並且比預期的時間多得多。我想,這可能是由於我創建的索引,但是,即使恢復一個集合,問題也是如此。一個集合大小約314MB,大約有185000個文檔。 通常,這件事情不會發生。這可能是由於我的系統磁盤空間較少,但也是11GB。 任何人都可以幫助我,它可能是什麼問題?MongoRestore花費比預期更多的時間和CPU
注意:我正在從mongo客戶端進行操作。不包括司機。
我只是恢復一個數據庫,我甩了幾分鐘後做出一些更改。 Mongorestore佔用了大約100%的CPU,並且比預期的時間多得多。我想,這可能是由於我創建的索引,但是,即使恢復一個集合,問題也是如此。一個集合大小約314MB,大約有185000個文檔。 通常,這件事情不會發生。這可能是由於我的系統磁盤空間較少,但也是11GB。 任何人都可以幫助我,它可能是什麼問題?MongoRestore花費比預期更多的時間和CPU
注意:我正在從mongo客戶端進行操作。不包括司機。
正如你在,這是關係到日誌的評論所指出的,那麼我會建議採取幾個步驟:
首先,使用日誌旋轉。這可以通過對數據庫的命令或將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運行以減少一些消息也。
你能澄清一下 - mongorestore過程是100%CPU還是你插入100%CPU的mongod?如果是mongod,那麼運行mongotop和mongostat應該讓你更好地瞭解這裏的工作。另外,在mongod日誌中查看是否有任何相關內容併發布該輸出是個好主意 –
嘿Adam,感謝您的回覆。我認爲,問題已經解決,這是由於mongodb日誌文件的大小。我有很多天有單個文件,因爲它的尺寸大大增加了。 :) –