我在Windows,Mac和Linux上安装了MongoDB。
我使用所有默认参数运行MongoDB,然后在mongo上输入命令db.serverStatus().connections
以检查可用的连接。
根据我的观察,Windows 7有19999,Mac只有203,Linux只有818.因此,我想问一下是什么使可用连接数不同,是否可以增加可用连接?
谢谢。
答案 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解决了我的错误。这详细说明了如何设置值。
按照文档操作,重新启动笔记本电脑,您应该会看到设置