Як збільшити максимальний ліміт відкритих файлів на Ubuntu 18.04?


16

Я запустив ulimit -n 65536, додав наступні рядки до /etc/security/limits.conf:

*    soft nofile 65536
*    hard nofile 65536
alix soft nofile 65536
alix hard nofile 65536
root soft nofile 65536
root hard nofile 65536

І додано session required pam_limits.soдо обох:

  • /etc/pam.d/common-session
  • /etc/pam.d/common-session-noninteractive

І fs.file-max = 65536до /etc/sysctl.d/60-file-max.conf.

І все-таки після перезапуску та запуску ulimit -nсеансу я отримую лише 4096 (раніше було 1024).

Що я пропускаю?

Відповіді:


12

З посібника:

 -n     The maximum number of open file descriptors (most
        systems do not allow this value to be set)

systemd є варіант для цього:

$ more /etc/systemd/system.conf | grep NOFILE
#DefaultLimitNOFILE=

Але це стосується лише графічних налаштувань користувача. Вийміть #і ви можете встановити його на 65536.

Коментар від Даніеля Фернандеса :

DefaultLimitNOFILE=65536 

може знадобитися і в

/etc/systemd/user.conf 

1
Забув згадати, я теж це робив.
Алікс Аксель

1
@AlixAxel: Ця відповідь працювала для мене, на додаток до * - nofile 16384(я намагався лише 16384) у /etc/security/limits.conf.
Doug Smythies

65k - це припущення, і можна було б очікувати, що існують жорсткі закодовані межі до верхньої сторони дозволеного. Можливо, ви хочете почати нижче, як вказав Дуг;)
Rinzwind

Що ви маєте на увазі під "Але це також стосується лише графічних налаштувань користувача"?
Сінан

1
Налаштування примітки DefaultLimitNOFILE=65536також може знадобитися в/etc/systemd/user.conf
Даніель Фернандес

2

Ubuntu 18.04 крок за кроком

Сподіваюся, що все це допомагає, досить довго, але це працює (з доказом)

Я натрапив на цю нитку під час встановлення MongoDb на Ubuntu 18.04

https://posidev.com/blog/2009/06/04/set-ulimit-parameters-on-ubuntu/

Як ви бачите, це досить старе, але це працює для мене.

Ось що я зробив.

  1. Рекомендовані параметри MongoDb ( https://docs.mongodb.com/manual/reference/ulimit/#review-and-set-resource-limits )

    • -f (розмір файлу): необмежений
    • -t (час процесора): необмежений
    • -v (віртуальна пам'ять): необмежено [1]
    • -l (розмір заблокованої пам'яті): необмежений
    • -n (відкриті файли): 64000
    • -м (об'єм пам'яті): необмежений [1] [2]
    • -u (процеси / потоки): 64000
  2. Перевірте мої поточні ліміти

ubuntu @ isdb-етап: ~ $ ulimit -a
розмір основного файлу (блоки, -c) 0
розмір сегмента даних (кбайт, -d) необмежений
Пріоритет планування (-е) 0
розмір файлу (блоки, -f) необмежений
сигнали в очікуванні (-i) 7873
Максимально заблокована пам'ять (кбайт, -l) 16384
Максимальний об'єм пам'яті (кбайт, -м) необмежений
відкрити файли (-n) 1024
розмір труби (512 байт, -p) 8
Черги повідомлень POSIX (байти, -q) 819200
пріоритет у режимі реального часу (-r) 0
розмір стека (кбайт, -ів) 8192
час процесора (секунди, -t) необмежений
максимальні користувацькі процеси (-u) 7873
віртуальна пам'ять (кбайт, -v) необмежена
блокування файлів (-x) необмежено
  1. Запишіть, що вимагає змін

    • розмір заблокованої пам’яті , потрібно встановити необмежений.
    • відкритих файлів , потрібно встановити на 64000
    • процесів / потоків * , потрібно встановити на 64000
  2. Що говорить ubuntu про те, як змінити ці ліміти?

$ man limit.conf

ІМ’Я
   limit.conf - файл конфігурації модуля pam_limits

ОПИС
   Модуль pam_limits.so застосовує обмеження для обмеження, приємний пріоритет та кількість одночасних сеансів входу для сеансів входу користувачів. Цей опис синтаксису файлу конфігурації застосовується до

       /etc/security/limits.conf файл та * .conf файли в 
       /etc/security/limits.d каталог.
  1. Здається, досить чітко відредагуйте файл /etc/security/limits.conf. Гаразд, давайте розібратися ...

Ось початок цього файлу, і подивіться, що навіть є інструкції, звичайно, пам’ятайте, що це відкритий код, написаний хорошими хлопцями! :)

    vi /etc/security/limits.conf

    # /etc/security/limits.conf 
    У кожному рядку описано обмеження для користувача у формі:                                                                   
    #                                                                                
    # Де:                                                               
    # може бути:
    # - ім’я користувача

(Подивіться сам файл, якщо хочете отримати більше деталей)
  1. Нарешті внесіть зміни. Оскільки MongoDb працює як mongodb група та користувач, було б хорошою ідеєю підвищити кількість обмежень лише для користувачів. Я бачив "*", що використовується тут і там, для мене це небезпека для безпеки. Це дає всім і всім на сервері ці обмеження, які можна використовувати для максимального виходу вашого сервера. Тож давайте зробимо їх лише для користувачів mongodb.

Ось мої зміни: -

mongodb soft memlock необмежений
mongodb жорсткий замок необмежений
mongodb soft nofile 64000
mongodb hard nofile 64000
mongodb soft nproc 64000
mongodb hard nproc 64000
  1. Нарешті, нарешті, запам'ятайте це у статті man.conf.

    limit.conf - файл конфігурації модуля pam_limits

    Краще переконайтеся, що модуль pam_limits завантажений, щоб все це обмежило роботу. Для цього слід редагувати /etc/pam.d/common-session. Звичайно, це також є на сторінці man.

sudo vi /etc/pam.d/common-session

# Додайте це, щоб забезпечити завантаження pam_limits.so.
потрібен сеанс pam_limits.so

Перезавантаження покаже обмеження (для користувача mongodb). Якщо ви застосували їх, використовуючи "*", ви можете перевірити, не перемикаючись на користувача mongodb. Просто виконайте цю команду.

$ ulimit -а

розмір основного файлу (блоки, -c) 0
розмір сегмента даних (кбайт, -d) необмежений
Пріоритет планування (-е) 0
розмір файлу (блоки, -f) необмежений
сигнали в очікуванні (-i) 7873
Максимально заблокована пам'ять (кбайт, -l) необмежена
Максимальний об'єм пам'яті (кбайт, -м) необмежений
відкрити файли (-n) 64000
розмір труби (512 байт, -p) 8
Черги повідомлень POSIX (байти, -q) 819200
пріоритет у режимі реального часу (-r) 0
розмір стека (кбайт, -ів) 8192
час процесора (секунди, -t) необмежений
максимум процесів користувача (-u) 64000
віртуальна пам'ять (кбайт, -v) необмежена
блокування файлів (-x) необмежено

Як бачимо, луб'яно-ювелірно все встановлено до тих меж, які ми хотіли.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.