Як постійно встановити значення ulimit?


19

Про Debian Wheezy ulimit -aдає:

open files                      (-n) 1024

Я додаю це до /etc/security/limits.conf

*                hard    nofile          64000

потім перезавантажте.

І ulimit -aвсе одно дає максимальну кількість відкритих файлів 1024. Хтось міг би кинути на нього світло?


це, можливо, віртуальний хост?
Денніс Нолте

ні, це сервер mongodb
Icu

Відповіді:


15

Варіант перший: Ви не встановили м'який ліміт більш високого рівня.

Можливе рішення:

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

* soft nofile 2048

тест с

ulimit -n 2048 

Варіант другий: Ви ввійшли як користувач, а в якомусь файлі "config" (профіль, bashrc, щось подібне) м'який ліміт встановлюється на менше значення.

Можливе рішення для усунення в папці etc та / або домашній папці.

Попередження: Залежно від кількості файлів / директорій, які у вас є, ви можете розглянути лише конкретні режими / файли

ps: тут є багато подібних питань, які ви можете прочитати.

Особливо жорсткий і м'який ліміт

Прочитайте тут для можливого іншого рішення, яке більш детально розглядається Занадто багато відкритих файлів


Насправді я намагався встановити лише жорсткий межа на 64000. Отже, м'який ліміт все ще був на 1024. Тепер я намагався встановити м'який ліміт на 64000 + hard = 72000. Але це не вийшло. Я також спробував "* - nofile 64000", і я отримав такий же результат.
Icu

Після читання «Занадто багато відкритих файлів», я думав , що установка ядра буде перевизначення параметрів limits.conf але: «fs.file-макс = 4933738»
Icu

@Icu спробуйте відповіді з цього: serverfault.com/questions/93234/… може бути пов’язаний з вашою оболонкою
Dennis Nolte

Я додав "сеанс, необхідний pam_limits.so", до /etc/pam.d/друге та загальний сеанс, але це не допомагає ... Як альтернатива, я додав "ulimit -n" до свого сценарію init, і він працює але мені цікаво, чому я не можу отримати правильні значення в своїй оболонці.
Icu

20

У Debian є помилка. Щоб збільшити ulimit, потрібно додати це у /etc/pam.d/common-sessionфайл:

session required pam_limits.so

і /etc/security/limits.confдодамо:

*               soft    nofile          65535
*               hard    nofile          65535

Потім перезавантажте систему.


1
мені не потрібно вносити будь-які зміни у /etc/pam.d/common-sessionфайл. він працював лише додавши до limits.confфайлу інші два рядки :-)
Франческо Касула

Вам не потрібно перезавантажувати.
Девід Гудвін

Це жорстоко. На Debian 7 зараз, і це не працює. Не впевнений, що робити :( - я можу відкрити нове запитання
NiCk Newman

12
Бум. *wildcard не працює 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

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

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