Mam długi proces w Debianie. W pewnym momencie rzuć błąd:
Zbyt wiele otwartych plików.
Bieganie:
ulimit -a
przedstawia:
otwórz pliki (-n) 1024
Chcę zwiększyć liczbę otwartych plików 2 razy. Po wykonaniu
ulimit -n 2048
limit jest aktywny do końca mojej sesji, co nie dotyczy zadania.
Jak mogę trwale zwiększyć liczbę otwartych plików?
źródło
W jądrze znajduje się również „maksymalna liczba” otwartych plików, możesz sprawdzić bieżące ustawienie za pomocą:
I ustaw nową wartość za pomocą:
Jeśli chcesz zachować konfigurację między restartami, dodaj
do
Aby sprawdzić bieżące maksymalne użycie pliku:
źródło
0
, oznacza to po prostu, że liczba uchwytów przydzielonych plików dokładnie odpowiada liczbie używanych uchwytów plików.49152 0 18446744073709551615
. Nie rozumiem, dlaczego dwie pierwsze kolumny nie sumują się do trzeciej. A jeśli mam 1,8 biliona trylionów, które są dostępne, nie widzę, jak je wszystkie wykorzystałem.Jak powiedzieli inni, możesz zastosować określone limity dla użytkownika lub grupy w /etc/security/limits.conf.
Uwaga: ulimit -n pokazuje miękki limit.
pokaże ci twardy limit.
Powoduje to, że dane wyjściowe ulimit -a i ulimit -n są dość mylące, jeśli na przykład zwiększasz liczbę plików z 1024 do 4096, jak można oczekiwać na wyjściu z twardego limitu, ale nadal widzisz 1024, co jest miękkim limit.
Pamiętaj również, że limity te są wymuszane przy każdym logowaniu, więc zaloguj się ponownie w nowej powłoce i sprawdź zmiany, nie oczekuj, że zostaną one przeniesione na istniejące loginy.
źródło
Należy pamiętać, że jeśli uruchomisz proces przez ustawienie start-stop-daemon ustawienie ulimits w /etc/security/limits.conf nie działa. Jeśli na przykład chcesz podnieść limit otwartych plików dla tomcat do 20000, musisz dodać je do wierszy
/etc/default/tomcat
:Ten problem napotkałem na Debianie 6.0.4. W przypadku innych procesów podane odpowiedzi powinny pomóc.
źródło
To zależy od tego, jak rozpoczniesz swój długotrwały proces. Jeśli jest uruchamiany w czasie rozruchu (za pomocą skryptów /etc/rcX.d/*), musisz umieścić w skrypcie startowym wywołanie ulimit, ponieważ jądro ustawia domyślny limit i nie można go regulować bez ponownej kompilacji.
Używanie
/etc/security/limits.conf
może działać, jeśli używasz gocron
do uruchomienia na przykład z wpisem takim jak ten:To powinno działać, ponieważ /etc/pam.d/cron włącza pam_limits.so.
źródło
Możesz dodać to w /etc/security/limits.conf
zapisz, a następnie uruchom ponownie.
źródło
Bardzo fajnym poleceniem jest,
ulimit -n
ale jest problem z zbyt dużą liczbą połączeń i zbyt dużą liczbą otwartych plików:źródło
ulimit -a
, a nieulimit -n
.