如何为 mongod 设置 ulimits?

如何为 mongod 设置 ulimits?

如何mongod在 CentOS 上为进程/用户设置 ulimit?

我有阅读官方文档但它不提供特定于操作系统的说明。

  • 我需要设置ulimit -u 64000并需要它在重启后继续存在。

  • 我正在运行 CentOS 5.5,但很快将升级到 6.5。

  • 我不想修改包管理器安装的任何脚本

答案1

/etc/security/limits.conf根据需要进行修改。例如:

user soft nproc 64000

此行将为“用户”设置处理器数量 ( -u) 为 64000。软/硬限制可以相同(软限制允许峰值,而硬限制阻止生成)。

答案2

CentOS mongod 启动脚本(/etc/init.d/mongod)较新版本的启动选项中内置了默认设置:

start()
{
  # Recommended ulimit values for mongod or mongos
  # See http://docs.mongodb.org/manual/reference/ulimit/#recommended-settings
  #
  ulimit -f unlimited
  ulimit -t unlimited
  ulimit -v unlimited
  ulimit -n 64000
  ulimit -m unlimited
  ulimit -u 32000

  echo -n $"Starting mongod: "
  daemon --user "$MONGO_USER" "$NUMACTL $mongod $OPTIONS >/dev/null 2>&1"
  RETVAL=$?
  echo
  [ $RETVAL -eq 0 ] && touch /var/lock/subsys/mongod
}

如果您想要更改值而不是修改脚本,请将脚本复制到 /etc/init.d/mongod-custom,然后编辑自定义初始化脚本,设置您的值并更改 chkconfig 以使用 mongod-custom 而不是 mongod。

答案3

为了补充 thaspius 的回答,限制似乎是按照他在初始化脚本中描述的方式设置的,但我仍然收到警告

[initandlisten] ** WARNING: soft rlimits too low. rlimits set to 1024 processes, 64000 files. Number of processes should be at least 32000 : 0.5 times number of files.

这似乎表明 init 脚本中定义的文件限制已生效,但进程限制尚未生效。还遵循 Nathan C 的回答并添加

mongod soft nproc 64000

/etc/security/limits.d/90-nproc.conf重新启动系统解决了该问题。

如果有人能够解释为什么尽管 mongodb 初始化脚本中有这些值,但这样做仍然有必要,我洗耳恭听!

答案4

为了使更改持久,您必须编辑 init 脚本,例如,在 Red Hat 7 中,init 脚本包含以下行:

LimitNOFILE=64000

您必须添加下一个:

LimitNPROC=32000

然后重新启动服务。

我希望这有帮助。

相关内容