无法映射文件内存-mongo需要64位版本才能生成更大的数据集

时间:2012-11-27 06:51:29

标签: mongodb

我在3个系统中有一个分片群集。 插入时我收到错误消息:

cant map file memory-mongo requires 64 bit build for larger datasets

我知道32位机器的限制大小为2 GB。 我有两个问题要问。

  1. 2 gb限制适用于1个系统,因此总数据为6gb,因为我的分片是在3个系统中完成的。那么它只有2 gb或6 gb?
  2. 虽然正确完成分片,但所有数据都存储在单个系统中,尽管在所有三个分片系统中分配数据?
  3. Sharding是否在增加数据量限制方面发挥了作用? 块大小在性能方面起着至关重要的作用吗?

2 个答案:

答案 0 :(得分:2)

我不建议您使用32位MongoDB执行任何,而不是在可能无法运行64位的开发机器上运行它。一旦达到限制,文件就变得不可用了。

文档说明“使用64位进行生产。这很重要,如果你达到mmap大小限制(确切限制变化但小于2GB),你将无法写入数据库(类似于磁盘)完整的条件)。“

答案 1 :(得分:0)

Sharding就是在多个节点上扩展数据集,所以在回答您的问题时,是的,您增加了数据集的可能大小。请记住,名称空间和索引也会占用空间。

您还没有指定您的mongos所在的位置???你在哪里看到错误 - mongodmongos?我怀疑它是mongod。我相信您需要查看pre-splitting块 - http://docs.mongodb.org/manual/administration/sharding/#splitting-chunks。   这似乎表明您的所有数据都将转到mongod

如果您有mongossh.status()会返回什么?块是否遍布所有mongod's

对于测试,我建议块大小为1mb。在制作中,最好坚持使用64mb的默认值,除非你有一些非常重要的原因,为什么你不想要默认值,你真的知道你在做什么。如果你的块大小太小,那么你将经常进行拆分。