Answers:
新版本的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。
为了补充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脚本中有值,但即使有人能够阐明为什么这样做是必要的,我很高兴!
在/etc/security/limits.conf
文件中进行此更改。设置硬限制和软限制,您应该会很好。
/etc/security/limits.d/
而不要limits.conf
直接弄乱文件
为了使更改持久化,您必须编辑初始化脚本,例如在Red Hat 7中,初始化脚本具有以下行:
LimitNOFILE=64000
您必须添加下一个:
LimitNPROC=32000
然后重新启动服务。
我希望这有帮助。
cat /proc/{pid}/limits
没有任何变化。是否还需要做其他事情以确保读取conf?