MongoDB:软 rlimits 太低。 rlimits 设置为 27774 个进程,64000 个文件。进程数应至少为 32000:文件数的 0.5 倍

标签 mongodb ulimit

我有一个在 14.04.05 LTS 上运行的 Ubuntu 服务器。

此服务器上还安装了几个 ugins mongodb 应用程序。 MongoDB版本为3.4.2

我正在尝试增加 mongodb 进程的最大进程 ulimit。

我首先将这些行放入 /etc/security/limits.conf

* 软 nproc 无限 *硬nproc无限 * 软文件 64000 * 硬文件 64000 * 软签名无限 *硬签名无限 根软 nproc 无限 root hard nproc unlimited 根软 nofile 64000 root 硬 nofile 64000 root soft signpending unlimited root hard signpending unlimited mongodb 软 nproc 无限 mongodb 硬 nproc 无限 mongodb 软 nofile 64000 mongodb 硬 nofile 64000 mongodb soft signpending unlimited mongodb 硬 signpending 无限

并将所需的 pam.limits 放到适当的位置并重新启动但没有成功。

然后我尝试手动运行 ulimit -u unlimited 命令,它在我执行后立即反射(reflect)出来(我看到了 ulimit -a 命令的结果)。然后重新启动 mongodb 进程,但限制没有改变。

然后我试着把这些行放到:

ulimit -f 无限制 ulimit -t 无限制 ulimit -v 无限制 ulimit -n 64000 ulimit -m 无限制 ulimit -u 无限

/etc/init.d/mongodb 文件并尝试使用 /etc/init.d/mongodb start 启动 mongodb 进程,但我收到此错误:

/etc/init.d/mongodb: 67: ulimit: 非法选项-u

我还将这一行 mongod soft nproc 64000 放入 /etc/security/limits.d/90-nproc.conf 并尝试重新启动但没有成功。

在这个线程 https://stackoverflow.com/questions/9361816/maximum-number-of-processes-in-linux 上,我看到一位用户报告了 kernel.threads- max 限制了这个数字,但在我的另一台服务器上,我可以获得比 kernel.threads-max/2

更多的最大连接限制

所以我不确定我哪里做错了,但非常感谢任何帮助。

最佳答案

在行中添加“@”对我有用:

@mongodb       soft        nproc      unlimited
@mongodb       hard      nproc        unlimited
@mongodb       soft       nofile      64000
@mongodb       hard      nofile      64000

关于MongoDB:软 rlimits 太低。 rlimits 设置为 27774 个进程,64000 个文件。进程数应至少为 32000:文件数的 0.5 倍,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49364187/

相关文章:

java - 使用Java将MongoDB数据转换为CSV

javascript - Meteor - createContainer 不渲染到 React

javascript - 用 Mongoose 查询嵌套文档

mongodb - 将字符串转换为objectid mongodb

docker - 无法减少docker容器内的ulimit

java - 使用MongoClientOptions设置的MongoDB Url

java - 关于用 java 导致太多打开的文件?

node.js - 错误 : EMFILE: too many open files, watch ,除非我使用 sudo

java - 带有java的linux ulimit不能正常工作

linux - 为什么 ulimit 不能成功限制常驻内存,如何限制?