Как установить 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

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

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

Другие вопросы по тегам