Jak ustawić wartość ulimit na stałe?

19

W Debian Wheezy ulimit -adaje:

open files                      (-n) 1024

Dodaję to do /etc/security/limits.conf

*                hard    nofile          64000

następnie uruchom ponownie.

I ulimit -anadal daje maksymalną liczbę otwartych plików wynoszącą 1024. Czy ktoś może rzucić na to trochę światła?

Icu
źródło
czy to może być wirtualny host?
Dennis Nolte
nie, to serwer mongodb
Icu

Odpowiedzi:

15

Opcja pierwsza: nie ustawiłeś również limitu miękkiego wyżej.

Możliwe rozwiązanie:

w /etc/security/limits.conf dodaj

* soft nofile 2048

test z

ulimit -n 2048 

Opcja druga: Jesteś zalogowany jako użytkownik i w jakimś pliku „config” (profil, bashrc, coś takiego) limit miękki jest ustawiony na niższą wartość.

Możliwym rozwiązaniem jest grep dla ulimit w folderze etc i / lub folderze domowym.

Ostrzeżenie: W zależności od ilości plików / katalogów, które tam masz, możesz rozważyć tylko określone katalogi / pliki

ps: istnieje wiele podobnych pytań, które możesz chcieć przeczytać.

Szczególnie twardy vs miękki limit

Przeczytaj tutaj, aby zapoznać się z możliwymi innymi rozwiązaniami, które zawierają więcej szczegółów. Zbyt wiele otwartych plików

Dennis Nolte
źródło
Właściwie próbowałem ustawić tylko twardy limit na 64000. Więc miękki limit wciąż wynosił 1024. Teraz próbowałem ustawić miękki limit na 64000 + twardy = 72000. Ale to nie zadziałało. Próbowałem też „* - nofile 64000” i otrzymuję ten sam wynik.
Icu
Po przeczytaniu „Zbyt wielu otwartych plików” pomyślałem, że ustawienie jądra zastąpi ustawienia limit.conf, ale: „fs.file-max = 4933738”
Icu
@ Icu wypróbuj odpowiedzi na to pytanie również: serverfault.com/questions/93234/… może być powiązany z twoją powłoką
Dennis Nolte
Dodałem „session session pam_limits.so” do /etc/pam.d/other i common-session, ale to nie pomaga ... Alternatywnie dodałem „ulimit -n” do mojego skryptu init i działa ale zastanawiam się, dlaczego nie mogę uzyskać poprawnych wartości w mojej powłoce.
Icu
20

W Debianie jest błąd. Aby zwiększyć ulimit, musisz dodać to do /etc/pam.d/common-sessionpliku:

session required pam_limits.so

i /etc/security/limits.confdodać:

*               soft    nofile          65535
*               hard    nofile          65535

Następnie uruchom ponownie system.

jpyzio
źródło
1
nie muszę wprowadzać żadnych zmian w /etc/pam.d/common-sessionpliku. działało po prostu poprzez dodanie dwóch pozostałych wierszy do limits.confpliku :-)
Francesco Casula
Nie powinieneś potrzebować restartu.
David Goodwin,
To jest brutalne. Na Debianie 7 i to nie działa. Nie jestem pewien, co robić :( - Mogę otworzyć nowe pytanie
NiCk Newman,
12
Bum. *symbol wieloznaczny nie działa root. Dodałem rootzamiast *i działa. Dziękuję Ci!
NiCk Newman
@FrancescoCasula - która to była wersja Debiana? Próbuję dowiedzieć się, czy to naprawdę jest błąd, a jeśli nadal istnieje ...
UpTheCreek
0

W moim przypadku Apache na Debianie 10 powyższe nie pomogło, chociaż to zadziałało:

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

Sprawdziłem za pomocą:

cat /proc/$pid/limits

.. gdzie $pidjest identyfikator procesu jednego z procesów Apache.

Neil Stockbridge
źródło