Mongorestore-太多的打开文件-Mac OS X



我试图将大数据库导入我的本地实例。

不幸的是,我发现一个问题是,对于进口收藏之一,Mongo抛出了例外,太多的文件是打开的。

我使用Google了解了Internet的强大知识,并与Ulimit和aunchTCTL找到了一些解决方案,但它们没有起作用。

最后,我通过以下方式解决了问题:

  1. 我创建了/etc/launchd.conf文件,并在其中添加了这些行:

   限制MaxProc 512 1024    限制MaxFiles 16384 32768
  1. 接下来,我在终端中执行Follwing线:

   sudo sysctl -w kern.maxfilesperproc = 16384    sudo sysctl -w kern.maxfiles = 32768
  1. 终于我重新启动了操作系统。

问题不再发生,但是我有疑问。如果有一些解决方案可以限制蒙古斯托尔级别打开的文件数量?我认为增加最大打开文件的全局价值不是一个好方法。

我使用此别名将带有不同设置的启动Mongod启动,并且可以解决到目前为止的任何问题:

ulimit -n 1024 && mongod

仅在当前壳会话上更改限制要安全得多。如果您需要在每个BASH控制台会话中进行bash配置文件,也可以将其添加到bash配置文件中。

ulimit -S -n 2048
your_whatever_greedy_command...

您可以使用另一个值修改2048。如果您的贪婪命令正在开始Mongo,则将是:

ulimit -s -n 2048&&mongod

的确--numParallelCollections=1在没有修改系统设置的情况下为我修复了此问题。我能够进行以前没有完成的完整DB还原。但是,由于我仍然得到 2017-06-01T16:55:19.386+0800 E NETWORK [initandlisten] Out of file descriptors. Waiting one second before trying to accept more connections. 试图继续。重新启动mongod

需要

没有一个特定于mongodb的命令行选项来限制mongorestoremongod打开的文件数量。由于MongoDB使用内存映射的文件,因此,如果您有大量的数据文件或连接,则可能超过默认的O/S限制。

OS X特别设置了每个进程的默认限制为256个打开文件,而大多数Linux发行版中的默认限制为1024或更高。有关资源利用和限制的更多信息,请参见MongoDB手册中的资源限制。

如果需要打开大量文件,则增加O/S限制是解决问题的正确方法。如果您有大数据库,则还应避免使用MongoDB smallFiles配置选项,因为此选项会增加给定数据集所需的打开文件数(通过减少每个数据文件允许的最大大小)。

<</p>

您可以尝试重新启动机器,而不是终端外壳,然后

ulimit -n 1024

我对此没有很好的解释,但是除非我重新启动操作系统,否则提供的解决方案不起作用。

最新更新