如何为mongod设置ulimit?

Tim*_*Tim 8 centos ulimit mongodb

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

我已经阅读了官方文档,但它没有提供特定于操作系统的说明。

  • 我需要设置ulimit -u 64000并需要它在重启后保持不变。

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

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

Nat*_*n C 12

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

user soft nproc 64000

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


小智 7

较新版本的 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
}
Run Code Online (Sandbox Code Playgroud)

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


小智 6

为了补充 thaspius 的答案,限制似乎是按照他在 init 脚本中描述的那样设置的,但我仍然收到警告

[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 init 脚本中有值,我全神贯注!