2012-01-24 57 views
0

尝试向我的MongoDB中插入数据时,出现“存储空间不足”错误。但从统计数字看,我远没有接近规模限制。MongoDB没有足够的存储空间,32位

> db.stats() 
{ 
     "db" : "{my db name}", 
     "collections" : 20, 
     "objects" : 281092, 
     "avgObjSize" : 806.4220539894412, 
     "dataSize" : 226678788, 
     "storageSize" : 470056960, 
     "numExtents" : 95, 
     "indexes" : 18, 
     "indexSize" : 13891024, 
     "fileSize" : 1056702464, 
     "nsSizeMB" : 16, 
     "ok" : 1 
} 

日志功能已启用,但日志文件大小仅为262232 KB。

虽然dataSize小于262144 KB的较小文件,但数据文件的大小为524032 KB已创建。

NS文件是16384 KB。

我读过几个地方,这个错误是由32位大约2 GB的大小限制引起的,但是为什么当我的dataSize低于这个值时出现这个错误?

回答

3

首先。该约束适用于fileSize,因为存储引擎使用内存映射文件。目前这个容量为1Gb。 MongoDB可能会预先分配一个新的数据文件,该数据文件的大小可能为1Gb(默认大小为64mb,128mb,256mb,512mb,1Gb,并且每个附加数据文件在2Gb上)。你可能正处于你有512MB一个而不是1Gb的那一点。

坦率地说,我认为在32位环境中使用MongoDB是绝对不行的,但如果您坚持使用它,您可以尝试使用--smallfiles选项,该选项分配最多512Mb的较小文件。

+0

是的,我知道这是一个32位系统上很烂,但是我现在坚持它。使用--smallfiles选项提供了非常好的建议,现在我已经实现了该功能,并在修复后使其工作。谢谢。 –

+0

你知道日记是否会计入大小限制? –

+0

它的确如此。它也是内存映射。 –

相关问题