MongoDB可用连接

时间:2014-03-13 10:03:17

标签: sql-server mongodb database-connection

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

根据我的观察,Windows 7有19999,Mac只有203,Linux只有818.因此,我想问一下是什么使可用连接数不同,是否可以增加可用连接?

谢谢。

3 个答案:

答案 0 :(得分:5)

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

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

在MongoDB 2.4及更早版本中,无论ulimits如何,每个服务器最多有20,000个连接的硬编码。在MongoDB 2.6中已删除此最大值。

还有一个maxConns MongoDB配置指令,可用于限制与ulimits允许的 lower 之间的连接。

答案 1 :(得分:0)

@fmchan关闭SELinux并再次检查。

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

现在,唯一对我有用的是 1. setenforce 0&& systemctl重启mongod.service 2.编写SELinux策略以允许mongod_exec_t进行setrlimit和rlimitinh

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

答案 2 :(得分:0)

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

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

launchctl limit maxfiles

我已按照https://gist.github.com/tombigel/d503800a282fcadbee14b537735d202c解决了我的错误。这详细说明了如何设置值。

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