mongoDBのデータサイズ

 6月1日のエントリで書いた件。PostgreSQLからmongoDBへデータを移行していると、途中でこんなエラーがでて停止してしまう。

Wed Jun  1 16:46:06 [conn26]      mmap failed with out of memory, if you're using 32-bits, then you probably need to upgrade to 64

これはどうも32bitOS上でのmongoDBのデータサイズ上限の模様。上限約2GBなんだと。mongodb.org上のドキュメントにそのような記述がありました。2GBって小さすぎるな。64bitOS上で動作させることをおすすめしますって。幸いなことに、このスクリプトを動作させるべき本番環境は64bit環境なので、問題なく動作しました。

ところで、上記エラーがでたmongodbですが、show dbsや、db.remove()なんかが一切きかなくなっちまいました。やろうとすると、メモリがとれないぞってエラーが。

Mon Jun  6 14:13:11 [conn3]   mmap() failed for /data/db/test.0 len:67108864 errno:12 Cannot allocate memory
Mon Jun  6 14:13:11 [conn3]      mmap failed with out of memory, if you're using 32-bits, then you probably need to upgrade to 64

強制的にデータを削除ってこともできない。しばらく考えた結果、一旦mongodを終了して、--repairオプションをつけてリペアしてから改めて起動して解決しました。

$ /usr/bin/mongodb --repair