MongoDB磁盘空间不足

时间:2013-09-26 12:36:31

标签: java mongodb bigdata

我必须在一个MongoDB集合中存储 200GB 的原始数据。哪个工作正常。 插入所有对象后,我必须使用游标迭代整个集合,并在每个对象上写一些新字段。 但在某些时候,提出错误说:

com.mongodb.MongoException:磁盘空间不足时无法写入锁定

com.mongodb.MongoException: Can't take a write lock while out of disk space
at com.mongodb.CommandResult.getException(CommandResult.java:100)
at com.mongodb.CommandResult.throwOnError(CommandResult.java:134)
at com.mongodb.DBTCPConnector._checkWriteError(DBTCPConnector.java:130)
at com.mongodb.DBTCPConnector.say(DBTCPConnector.java:154)
at com.mongodb.DBTCPConnector.say(DBTCPConnector.java:137)
at com.mongodb.DBApiLayer$MyCollection.update(DBApiLayer.java:353)
at com.mongodb.DBCollection.update(DBCollection.java:165)
at com.mongodb.DBCollection.save(DBCollection.java:771)
at com.asuum.products.mongodb.ProductDatabaseHandler.writeToProductsDB(ProductDatabaseHandler.java:98)
at com.asuum.products.images.ImageSizeCalculator.convertImages(ImageSizeCalculator.java:89)
at com.asuum.products.images.ImageSizeCalculator.main(ImageSizeCalculator.java:100)

我正在使用Java-Client,MongoDB版本2.4.6,我在一个巨大的64位Linux服务器上运行它,具有32核,256GB RAM和1.5 TB磁盘空间。

当我运行统计数据时,它会告诉我:

{ "serverUsed" : "localhost/127.0.0.1:27017" , 
  "ns" : "products.productCollection" , 
  "count" : 2090339 , 
  "size" : 2.6235131E9 , 
  "avgObjSize" : 1255.0658529549514 , 
  "storageSize" : 6.933086208E9 , 
  "numExtents" : 25 , 
  "nindexes" : 0 , 
  "lastExtentSize" : 726470656 , 
  "paddingFactor" : 1.9980000000199927 , 
  "systemFlags" : 0 , "userFlags" : 0 , 
  "totalIndexSize" : 0 , "indexSizes" : { } , 
  "ok" : 1.0 }

所以我认为有足够的磁盘空间......

我正在程序启动时对集合运行compact-command。 我没有更改有关节点和副本集的默认配置中的任何内容。

可能是什么问题?

0 个答案:

没有答案