如何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
然后重新启动服务。
我希望这有帮助。