2013-06-18 56 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