【问题标题】:MongoDB available connectionsMongoDB 可用连接
【发布时间】:2014-04-17 23:24:06
【问题描述】:

我在 Windows、Mac 和 Linux 上安装了 MongoDB。 我使用所有默认参数运行 MongoDB,并在 mongo 上输入命令 db.serverStatus().connections 以检查可用连接。

这是我的观察,Windows 7 有 19999,Mac 只有 203,Linux 有 818。所以我想问一下是什么导致可用连接数不同,是否可以增加可用连接数?

【问题讨论】:

    标签: sql-server mongodb database-connection


    【解决方案1】:

    对于类 UNIX 系统(即 Linux 和 OS X),连接限制由 ulimits 控制。 MongoDB 将使用 80% 的可用文件描述符进行连接,这就是为什么您在 Mac 上看到 203(约 256 的 80%)和在 Linux 上看到 819(约 1024 的 80%)的原因。

    MongoDB 文档包括用于生产系统的 recommended settings。通常,您不需要在开发环境中更改此设置,但如果认为连接限制较低,您会在启动时看到警告。

    在 MongoDB 2.4 及更早版本中,每个服务器的硬编码最大连接数为 20,000 个,与 ulimit 无关。从 MongoDB 2.6 开始,此最大值已被删除。

    还有一个maxConns MongoDB 配置指令可用于将连接限制为低于 ulimits 所允许的范围。

    【讨论】:

      【解决方案2】:

      @fmchan 关闭 SELinux 并再次检查。

      我在 systemd 和 /etc/security/limits.conf 文件中设置了较高的 NOFile 和 NProc 限制。但是,它没有帮助

      现在,唯一对我有用的是 1. setenforce 0 && systemctl restart mongod.service 2.编写SELinux策略,允许mongod_exec_t设置rlimit和rlimitinh

      这是一个类似的问题https://bugzilla.redhat.com/show_bug.cgi?id=1415045

      【讨论】:

        【解决方案3】:

        我遇到了同样的问题,显然 ulimit -n 6000 没有帮助。

        在 macos 上,我们可以使用以下命令检查打开文件的设置,在我的情况下显示 256,256 的 80% 是 204,因此 mongo 的最大连接数是 204。

        launchctl limit maxfiles
        

        我已关注https://gist.github.com/tombigel/d503800a282fcadbee14b537735d202c 来解决我的错误。这详细解释了如何设置这些值。

        按照文档,重新启动笔记本电脑,您应该会看到设置

        【讨论】:

          猜你喜欢
          • 2013-10-11
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-06-22
          • 1970-01-01
          • 1970-01-01
          • 2017-02-08
          • 1970-01-01
          相关资源
          最近更新 更多