Как установить ulimits для mongod?
Как установить ограничения для mongod
процесс / пользователь на CentOS?
Я прочитал официальную документацию, но она не содержит инструкций для конкретной ОС.
Мне нужно установить
ulimit -u 64000
и нужно, чтобы это сохранялось после перезагрузки.Я использую CentOS 5.5, хотя скоро обновлюсь до 6.5.
Я бы предпочел не изменять какие-либо сценарии, установленные менеджером пакетов
5 ответов
Изменять /etc/security/limits.conf
с тем, что вам нужно. Пример:
user soft nproc 64000
В этой строке будет установлено количество процессоров (-u
) до 64000 для "пользователя". Мягкие / жесткие ограничения могут быть одинаковыми (мягкие позволяют пики, в то время как жесткие предотвращают нерест).
В более новой версии сценария запуска 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.
Чтобы добавить к ответу Таспиуса, кажется, установлены ограничения, как он описывает в сценарии инициализации, но я все еще получал предупреждение
[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.
Кажется, это говорит о том, что ограничение на количество файлов, определенное в скрипте инициализации, вступило в силу, но не на ограничение процессов. Также следуя ответу Натана С. и добавляя
mongod soft nproc 64000
в /etc/security/limits.d/90-nproc.conf
и перезапуск системы решил проблему.
Если кто-то может пролить свет на то, почему это было необходимо, несмотря на наличие значений в сценарии инициализации mongodb, я весь в ушах!
Сделайте это изменение в /etc/security/limits.conf
файл. Установите жесткие и мягкие ограничения, и вы должны быть хорошими.
Чтобы изменения были постоянными, вы должны отредактировать скрипт de init, например, в Red Hat 7, скрипт init имеет следующую строку:
LimitNOFILE=64000
Вы должны добавить следующее:
LimitNPROC=32000
А затем перезапустите сервис.
Надеюсь, это поможет.