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

时间:2018-03-19 13:29:37

标签: mongodb ulimit

我有一台运行于14.04.05 LTS的Ubuntu服务器。

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

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

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

* soft nproc unlimited * hard nproc unlimited * soft nofile 64000 * hard nofile 64000 * soft sigpending unlimited * hard sigpending unlimited root soft nproc unlimited root hard nproc unlimited root soft nofile 64000 root hard nofile 64000 root soft sigpending unlimited root hard sigpending unlimited mongodb soft nproc unlimited mongodb hard nproc unlimited mongodb soft nofile 64000 mongodb hard nofile 64000 mongodb soft sigpending unlimited mongodb hard sigpending unlimited

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

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

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

ulimit -f unlimited ulimit -t unlimited ulimit -v unlimited ulimit -n 64000 ulimit -m unlimited ulimit -u unlimited

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

/etc/init.d/mongodb: 67: ulimit: Illegal option -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

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

3 个答案:

答案 0 :(得分:0)

尝试将-S添加到每行,如下所示:     ulimit -S -n 4096

答案 1 :(得分:0)

要使更改持久化,您必须编辑初始化脚本,例如在Red Hat 7中,初始化脚本具有以下行:

LimitNOFILE=64000

您必须添加下一个:

LimitNPROC=32000

然后重新启动服务。

我希望这会有所帮助。

答案 2 :(得分:0)

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

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