我試圖將一個大型數據庫的轉儲導入到我本地的mongodb實例中。Mongorestore - 打開的文件太多 - mac os x
不幸的是,我發現一個問題,對於一個導入的集合,mongo引發異常,太多的文件被打開。
我使用谷歌瀏覽了互聯網的強大知識,並且發現了ulimit和launchctl的一些解決方案,但他們沒有奏效。
最後我決定以下列方式問題:
- 我創建/etc/launchd.conf文件,並添加有這些行:
limit maxproc 512 1024 limit maxfiles 16384 32768
- 接下來我在終端執行如下行:
- 最後我重新啓動操作系統。
sudo sysctl -w kern.maxfilesperproc=16384 sudo sysctl -w kern.maxfiles=32768
問題不再發生,但我有問題。如果有一些解決方案來限制從mongorestore級別打開文件的數量?我不認爲爲最大打開的文件增加全局值是一個好方法。
也有這個問題,有太多的命名空間,以增加內核的限制到那個水平只是爲了能夠爲一個命令設置ulimit。這看起來像一個bug:mongorestore應該在完成導入時關閉文件,這應該只是刪除問題。 對該票證的建議是使用--numParallelCollection 1,它可以解決問題(默認值爲4)。 – FGM