Как установить значение ulimit навсегда?

19

На Debian Wheezy, ulimit -aдает:

open files                      (-n) 1024

Я добавляю это в /etc/security/limits.conf

*                hard    nofile          64000

затем перезагрузите компьютер.

И ulimit -aвсе же дает максимальное количество открытых файлов 1024. Кто-нибудь может пролить свет на это?

Icu
источник
это возможно виртуальный хост?
Деннис Нольте
нет, это сервер mongodb
Icu

Ответы:

15

Вариант первый: вы не установили softlimit выше также.

Возможное решение:

в /etc/security/limits.conf добавить

* soft nofile 2048

проверить с

ulimit -n 2048 

Вариант второй: вы вошли как пользователь, и в каком-то файле «config» (профиль, bashrc, что-то вроде этого) мягкое ограничение установлено на более низкое значение.

Возможное решение, например, grep для ulimit в вашей папке etc и / или домашней папке.

Предупреждение: в зависимости от количества файлов / каталогов, которые у вас есть, вы можете рассмотреть только определенные каталоги / файлы

PS: здесь есть много похожих вопросов, которые вы можете прочитать.

Специально Hard против Soft Limit

Читайте здесь для возможного другого решения, которое более подробно описано слишком много открытых файлов

Деннис Нолте
источник
На самом деле, я пытался установить только жесткое ограничение на 64000. Таким образом, мягкое ограничение было все еще на 1024. Теперь я попытался установить мягкое ограничение на 64000 + hard = 72000. Но это не сработало. Я попробовал также "* - nofile 64000" и получаю тот же результат.
Icu
Прочитав «Слишком много открытых файлов», я подумал, что настройка ядра переопределяет настройки limit.conf, но: «fs.file-max = 4933738»
Icu,
@ Я попробую ответить на этот вопрос, а также: serverfault.com/questions/93234/… может быть связан с вашей оболочкой
Деннис Нольте,
Я добавил 'session required pam_limits.so' в /etc/pam.d/other и common-session, но это не помогает ... В качестве альтернативы я добавил 'ulimit -n' в мой скрипт инициализации, и он работает но мне интересно, почему я не могу получить правильные значения в моей оболочке.
Icu
20

В Debian есть ошибка. Для увеличения ulimitвам нужно добавить это в /etc/pam.d/common-sessionфайл:

session required pam_limits.so

и /etc/security/limits.confдобавить:

*               soft    nofile          65535
*               hard    nofile          65535

Затем перезагрузите систему.

jpyzio
источник
1
мне не нужно вносить какие-либо изменения в /etc/pam.d/common-sessionфайл. это сработало, просто добавив две другие строки в limits.confфайл :-)
Франческо Касула
Вам не нужно перезагружаться.
Дэвид Гудвин
Это жестоко. На Debian 7 сейчас, и это не работает. Не уверен, что делать :( - Я мог бы открыть новый вопрос
NiCk Newman
12
Boom. *подстановочный знак не работает для root. Я добавил rootвместо *, и это работает. Спасибо!
NiCk Newman
@FrancescoCasula - какая версия Debian была? Просто пытаюсь выяснить, действительно ли это ошибка, и если она все еще существует ...
UpTheCreek
0

В моем случае с Apache на Debian 10 вышеописанное не помогло, хотя это сработало:

echo "APACHE_ULIMIT_MAX_FILES='ulimit -n 16384'" >> /etc/apache2/envvars
service apache2 restart

Я проверил с:

cat /proc/$pid/limits

..where $pid- идентификатор процесса одного из процессов Apache.

Нил Стокбридж
источник