2012-11-27 56 views
3

我在3個系統中擁有分片羣集。 雖然插入我得到的錯誤信息:無法映射文件內存-mongo需要64位版本才能處理較大的數據集

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. 雖然分片正確完成,但是所有數據都存儲在單個系統中,儘管在所有三個分片系統中都分佈了數據?

是否在增加數據大小限制中發揮任何作用? 塊大小在性能中扮演什麼重要角色?

回答

0

分片是所有關於在多個節點上擴展數據集以便回答您的​​問題的原因,是的,您已經增加了數據集的可能大小。請記住,名稱空間和索引也佔用空間。

你還沒有指定你的mongos所在的位置?你從哪裏看到錯誤 - mongodmongos?我懷疑這是mongod。我相信你需要看看pre-splitting的大塊 - http://docs.mongodb.org/manual/administration/sharding/#splitting-chunks。 這似乎表明您的所有數據都將轉到一個mongod

如果您有mongossh.status()會返回什麼?塊是否遍佈全部mongod's

爲了測試,我建議1mb的塊大小。在製作過程中,最好堅持使用默認的64MB,除非你有一些非常重要的原因,爲什麼你不需要默認設置,並且你真的知道你在做什麼。如果你的塊大小太小,那麼你會經常進行分割。

+0

非常感謝它幫助我用分佈在所有系統中的數據來分解系統。 – naushad

1

我不會推薦你做什麼與32位的MongoDB超越在開發機器上運行它,你可能無法運行64位。一旦達到限制,文件就變得不可用。

文檔狀態「使用64位進行生產,這很重要,因爲如果您達到mmap大小限制(確切的限制可變但小於2GB),您將無法寫入數據庫(類似於磁盤已滿條件)。」

+0

請原諒我沒有說明我沒有使用它進行生產。這只是爲了測試目的。我正在3個系統中使用分片羣測試它。我試圖插入10億條記錄並記錄插入的時間。但是在插入時,它停在1,63,59069,而數據的大小几乎是2GB,並拋出上述錯誤。 – naushad

相關問題