MongoDB: мягкие rlimits слишком малы. rlimits установлен на 27774 процесса, 64000 файлов. Количество процессов должно быть не менее 32000 : 0,5 умножить на количество файлов

У меня есть сервер Ubuntu, который работает на 14.04.05 LTS.

На этом сервере также установлено несколько приложений ugins mongodb. Версия MongoDB — 3.4.2.

Я пытаюсь увеличить максимальный процесс ulimit процесса mongodb.

Сначала я поместил эти строки в /etc/security/limits.conf

* soft nproc unlimited * hard nproc unlimited * soft nofile 64000 * hard nofile 64000 * soft sigpending unlimited * hard sigpending unlimited root soft nproc unlimited root hard nproc unlimited root soft nofile 64000 root hard nofile 64000 root soft sigpending unlimited root hard sigpending unlimited mongodb soft nproc unlimited mongodb hard nproc unlimited mongodb soft nofile 64000 mongodb hard nofile 64000 mongodb soft sigpending unlimited mongodb hard sigpending unlimited

а также поместите необходимые pam.limits в нужные места и перезагрузите компьютер, но безуспешно.

Затем я попытался вручную запустить команду ulimit -u unlimited, которая отображается сразу после ее выполнения (я видел результат с командой ulimit -a). Затем перезагрузите процесс mongodb, но ограничения не изменились.

Затем я попытался поместить эти строки в:

ulimit -f unlimited ulimit -t unlimited ulimit -v unlimited ulimit -n 64000 ulimit -m unlimited ulimit -u unlimited

в файл /etc/init.d/mongodb и попробуйте запустить процесс mongodb с /etc/init.d/mongodb start, но я получил эту ошибку:

/etc/init.d/mongodb: 67: ulimit: Illegal option -u

Я также поместил эту строку mongod soft nproc 64000 в /etc/security/limits.d/90-nproc.conf и попытался перезагрузить компьютер, но безуспешно.

В этой ветке https://stackoverflow.com/questions/9361816/maximum-number-of-processes-in-linux я увидел, что один пользователь сообщил о kernel.threads-max, что он ограничивает это число, но на моем другом сервере я могу получить больше максимального ограничения на количество подключений, чем kernel.threads-max / 2

Поэтому я не уверен, где я делаю неправильно, но любая помощь очень ценится.


person hardc0der    schedule 19.03.2018    source источник


Ответы (3)


Попробуйте добавить -S к каждой строке, например: ulimit -S -n 4096

person saccodd    schedule 25.06.2018

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

LimitNOFILE=64000

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

LimitNPROC=32000

Затем перезапустите службу.

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

person Ángel Orosa    schedule 31.10.2018

Добавление @ к строкам у меня работает:

@mongodb       soft        nproc      unlimited
@mongodb       hard      nproc        unlimited
@mongodb       soft       nofile      64000
@mongodb       hard      nofile      64000
person user2974878    schedule 24.05.2021