Я пытаюсь увеличить лимит открытых файлов для пользователя root, а также для пользователя без прав root через /etc/security/limits.conf
. Но, не могу пройти дальше 999999
, все, что выше этого значения, возвращается к значению по умолчанию 1024
, и я не могу установить его на неограниченное количество
Вот мойlimits.conf
* hard nofile 999999
* hard nofile 999999
root hard nofile 999999
root soft nofile 999999
Вышеуказанное работает отлично и ulimit -n
возвращает 999999
.
Но если я увеличу значение на один шаг или до unlimited
или -1
или infinity
это не сработает. ulimit -n
return1024
Я ссылался здесь:limits.conf — файл конфигурации для модуля pam_limits | Ubuntu Manpage
Спасибо
решение1
Я знаю, что это опоздало на 10 месяцев, но вы дважды установили жесткий лимит для всех пользователей. Измените вторую строку на мягкий ulimit.
* hard nofile 999999
* soft nofile 999999
root hard nofile 999999
root soft nofile 999999
После этого вы должны увидеть:
$ ulimit -n
999999
$
Ваш файл всегда должен был работать для root, поскольку ограничения были определены правильно.
Более того, вы не можете использовать -1, бесконечность, неограниченный или что-то подобное, вы должны использовать буквальное значение. Максимальное поддерживаемое значение для этого определено в ядре и представлено в /proc/sys/fs/nr_open. В моих окружениях centos 7 и debian strech я получаю одно и то же значение:
$ cat /proc/sys/fs/nr_open
1048576
$
Вам также придется начать новый сеанс, чтобы лимиты обновились.
решение2
Чтобы это заработало, нужно изменить три файла:
/etc/security/limits.conf
/etc/pam.d/common-session
/etc/pam.d/common-session-noninteractive
Вы уже добавили необходимые строки в первый файл, значит в двух других файлах нужна эта строка:
session required pam_limits.so
Пожалуйста, обрати внимание:
Большинство ресурсов забывают подчеркнуть, что ваши ограничения могут быть легко изменены чем угодно, отвечающим за выполнение ваших процессов. Если ulimit -n (запущенный как правильный пользователь) выдает вам только что установленное вами число, но cat /proc/{process_id}/limits все еще выводит низкое число, у вас почти наверняка есть менеджер процессов, скрипт инициализации или что-то подобное, что портит ваши ограничения. Вам также нужно помнить, что процессы наследуют ограничения родительского процесса.
Следовательно, если такой процесс существует, то вам придется изменить файл конфигурации, чтобы он заработал.
Источник: https://underyx.me/2015/05/18/увеличение-максимального-числа-дескрипторов-файлов