Mongorestore - 太多打开的文件 - mac os x

Kam*_*jąc 5 macos mongodb

我试图将一个大数据库的转储导入我的本地mongodb实例.

不幸的是,我发现一个问题,对于其中一个导入的集合,mongo抛出异常,打开了太多文件.

我使用谷歌了解了互联网的强大知识,我找到了一些ulimit和launchctl的解决方案,但它们没有用.

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

  1. 我创建了/etc/launchd.conf文件并添加了以下这些行:

    limit maxproc 512 1024
    limit maxfiles 16384 32768
  1. 接下来,我在终端中执行以下行:

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

问题不再发生,但我有疑问.如果有一些解决方案来限制mongorestore级别打开的文件数量?我不认为增加max打开文件的全局值是一个好方法.

dcs*_*san 8

我使用此别名以不同的env设置启动mongod,到目前为止它解决了所有问题:

ulimit -n 1024 && mongod


A. *_*ssi 6

仅更改当前 shell 会话的限制要安全得多。如果您需要在每个 bash 控制台会话中使用它,也可以将其添加到您的 bash 配置文件中。

ulimit -S -n 2048
your_whatever_greedy_command...
Run Code Online (Sandbox Code Playgroud)

您可以使用另一个值修改 2048。如果您的贪婪命令正在启动 mongo,它将是:

ulimit -S -n 2048 && mongod


Ste*_*nie 0

没有特定于 MongoDB 的命令行选项来限制mongorestore或打开的文件数量mongod。由于 MongoDB 使用内存映射文件,如果您有大量数据文件或连接,则可能会超出默认的操作系统限制。

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

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