如何为mongod设置ulimit?


8

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

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

  • 我需要进行设置,ulimit -u 64000并需要此设置在重启后继续存在。

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

  • 我不希望修改软件包管理器安装的任何脚本

Answers:


12

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

user soft nproc 64000

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


谢谢,但是这样做并重新启动mongod之后cat /proc/{pid}/limits没有任何变化。是否还需要做其他事情以确保读取conf?
蒂姆(Tim)

1
是的,重新启动服务器。它由内核设置。
内森·C

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
}

如果要更改值而不修改脚本,请将脚本复制到/etc/init.d/mongod-custom,然后编辑自定义init脚本,设置值,然后将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脚本中定义的文件限制已生效,但进程限制未生效。也跟随内森·C的回答并添加

mongod soft nproc 64000

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

尽管mongodb init脚本中有值,但即使有人能够阐明为什么这样做是必要的,我很高兴!


同样在这里,为什么忽略“ nproc”设置对我来说是一个迷。
Ostati

1

/etc/security/limits.conf文件中进行此更改。设置硬限制和软限制,您应该会很好。


我建议您在内部使用文件,/etc/security/limits.d/而不要limits.conf直接弄乱文件
Joshua Grigonis

1

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

LimitNOFILE=64000

您必须添加下一个:

LimitNPROC=32000

然后重新启动服务。

我希望这有帮助。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.