Как установить ulimits для mongod?

8

Как мне установить ulimits для mongodпроцесса / пользователя в CentOS?

Я прочитал официальную документацию, но она не содержит инструкций для конкретной ОС.

  • Мне нужно установить ulimit -u 64000и нужно, чтобы это сохранялось после перезагрузки.

  • Я использую CentOS 5.5, хотя скоро обновлюсь до 6.5.

  • Я бы предпочел не изменять какие-либо сценарии, установленные менеджером пакетов

Тим
источник

Ответы:

12

Изменить /etc/security/limits.confс тем, что вам нужно. Пример:

user soft nproc 64000

Эта строка установит число процессоров ( -u) равным 64000 для «пользователя». Мягкие / жесткие ограничения могут быть одинаковыми (мягкие позволяют пики, в то время как жесткие предотвращают нерест).

Натан С
источник
Спасибо, но после этого и перезапуска mongod не cat /proc/{pid}/limitsпоказывает никаких изменений. Нужно ли что-то сделать, чтобы убедиться, что файл conf прочитан?
Тим
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, затем отредактируйте пользовательский сценарий инициализации, задайте значения и измените chkconfig, чтобы использовать mongod-custom вместо mongod.

thaspius
источник
6

Чтобы добавить к ответу Таспиуса, кажется, установлены ограничения, как он описывает в сценарии инициализации, но я все еще получал предупреждение

[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, я весь в ушах!

user2050789
источник
То же самое, почему настройка "nproc" была проигнорирована, для меня загадка.
Остати
1

Сделайте это изменение в /etc/security/limits.confфайле. Установите жесткие и мягкие ограничения, и вы должны быть хорошими.

Джон
источник
Я бы порекомендовал использовать файлы внутри, /etc/security/limits.d/а не связываться с ними limits.confнапрямую
Джошуа Григонис
1

Чтобы изменения были постоянными, вы должны отредактировать скрипт de init, например, в Red Hat 7, скрипт init имеет следующую строку:

LimitNOFILE=64000

Вы должны добавить следующее:

LimitNPROC=32000

А затем перезапустите сервис.

Надеюсь, это поможет.

Анхель Ороса Родригес
источник