我试图将一个大型数据库的转储导入到我本地的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