2013-06-18 65 views
0

我使用的是MongoDB 2.4,當我第一次啓動mongo時,我在一臺服務器上獲得了9GB日誌文件,而在第二臺服務器上,我只獲得0.5GB日記文件。 在第一臺服務器上,MongoDB需要5分鐘才能加載!而第二個則需要幾秒鐘。 這兩個實例都沒有數據並且第一次運行。 每臺服務器獨立工作,兩者不相關。 每臺服務器都有它自己的碎片(所有碎片 - 其中3個碎片都在同一臺服務器中)。Mongodb日誌記錄 - 文件非常大

每個服務器,這意味着我有:

/usr/mongodb/bin/mongod --configsvr --dbpath /data/svr1 --port 27019 

/usr/mongodb/bin/mongod --configsvr --dbpath /data/svr2 --port 27020 

/usr/mongodb/bin/mongod --configsvr --dbpath /data/svr3 --port 27021 

/usr/mongodb/bin/mongod --dbpath /data/db1 --port 27010 

/usr/mongodb/bin/mongod --dbpath /data/db2 --port 27011 

/usr/mongodb/bin/mongod --dbpath /data/db3 --port 27012 

/usr/mongodb/bin/mongos --configdb localhost:27019,localhost:27020,localhost:27021 

,並創建碎片腳本:

sh.addShard("localhost:27010"); 

sh.addShard("localhost:27011"); 

sh.addShard("localhost:27012"); 

sh.enableSharding("somescheme"); 

我不知道爲什麼我得到一個9GB文件日記一日一和0.5 GB上的第二個? 第一個有更大的硬盤,而不是SSD,第二個是SSD和更小的。 有什麼想法? 謝謝!

+1

你在第二臺主機上運行smallfiles標誌(無論是命令行還是在.cfg中)?啓用後,這將減少分配給日誌和數據文件的大小。另外需要注意的是,如果你的mongod實例決定它會更有效率,那麼MongoDB將只預先分配日誌文件。有關詳細信息,請參閱以下內容:http://docs.mongodb.org/manual/core/journaling/#journal-files –

+0

nope,不在兩個小文件上運行。我讀過,當每個節點上有大量數據時,建議不要使用小文件來運行,只有在每個節點上有很多數據量較小的節點時纔會運行。 – user1986447

+0

這是正確的,我在生產小文件中看到的唯一情況是當你運行大量的小型數據庫時。你可以在兩個日誌目錄上提供ls -l嗎?看到文件的大小和#會很有趣。 –

回答

0

如果MongoDB確定最好這樣做,它將預先分配日誌文件。檢查你的日誌是這樣的:

Thu Mar 10 20:49:33 [initandlisten] preallocating a journal file db/journal/prealloc.0 
Thu Mar 10 20:52:49 [initandlisten] preallocating a journal file db/journal/prealloc.1