Jak zwiększyć limit liczby otwartych plików w systemie Linux
W systemie Linux możesz zmienić maksymalną liczbę otwartych plików. Możesz zmodyfikować tę liczbę za pomocą polecenia ulimit. Daje możliwość kontrolowania zasobów dostępnych dla powłoki lub uruchamianego przez nią procesu.
Przeczytaj także: Ustaw limity uruchomionych procesów w systemie Linux na poziomie użytkownika
W tym krótkim samouczku pokażemy Ci jak sprawdzić aktualny limit otwartych plików i opisów plików, ale aby to zrobić, musisz mieć uprawnienia roota do swojego systemu.
Najpierw zobaczmy, jak możemy sprawdzić maksymalną liczbę otwartych deskryptorów plików w systemie Linux.
Znajdź limit otwartych plików w systemie Linux
Wartość jest przechowywana w:
cat /proc/sys/fs/file-max
818354
Liczba, którą zobaczysz, pokazuje liczbę plików, które użytkownik może otworzyć podczas jednej sesji logowania. Wynik może się różnić w zależności od systemu.
Na przykład na moim serwerze CentOS limit został ustawiony na 818354, podczas gdy na serwerze Ubuntu, który uruchamiam w domu, domyślny limit wynosił ustaw na 176772.
Jeśli chcesz zobaczyć twarde i miękkie limity, możesz użyć następujących poleceń:
Sprawdź Hard Limit w Linuksie
ulimit -Hn
4096
Sprawdź miękkie limity w systemie Linux
ulimit -Sn
1024
Aby zobaczyć twarde i miękkie wartości dla różnych użytkowników, możesz po prostu przełączyć użytkownika za pomocą „su” na użytkownika, którego limity chcesz sprawdzić.
Na przykład:
su marin
ulimit -Sn
1024
ulimit -Hn
4096
Jak sprawdzić ogólnosystemowe limity deskryptorów plików w systemie Linux
Jeśli używasz serwera, niektóre aplikacje mogą wymagać wyższych limitów otwartych deskryptorów plików. Dobrym przykładem są usługi MySQL/MariaDB lub serwer WWW Apache.
Możesz zwiększyć limit otwieranych plików w systemie Linux, edytując dyrektywę jądra fs.file-max
. Można w tym celu skorzystać z narzędzia sysctl.
Sysctl służy do konfigurowania parametrów jądra w czasie wykonywania.
Na przykład, aby zwiększyć limit otwartych plików do 500000, jako root możesz użyć następującego polecenia:
sysctl -w fs.file-max=500000
Możesz sprawdzić bieżącą wartość otwartych plików za pomocą następującego polecenia:
cat /proc/sys/fs/file-max
Za pomocą powyższego polecenia wprowadzone zmiany pozostaną aktywne tylko do następnego ponownego uruchomienia. Jeśli chcesz zastosować je na stałe, będziesz musiał edytować następujący plik:
vi /etc/sysctl.conf
Dodaj następujący wiersz:
fs.file-max=500000
Oczywiście możesz zmienić liczbę w zależności od potrzeb. Aby ponownie zweryfikować zmiany, użyj:
cat /proc/sys/fs/file-max
Aby zmiany zaczęły obowiązywać, użytkownicy będą musieli się wylogować i zalogować ponownie. Jeśli chcesz natychmiast zastosować limit, możesz użyć następującego polecenia:
sysctl -p
Ustaw limity otwartych plików na poziomie użytkownika w systemie Linux
Powyższe przykłady pokazały, jak ustawić limity globalne, ale możesz chcieć zastosować limity dla poszczególnych użytkowników. W tym celu jako użytkownik root będziesz musiał dokonać edycji następującego pliku:
vi /etc/security/limits.conf
Jeśli jesteś administratorem Linuksa, sugeruję dokładne zapoznanie się z tym plikiem i tym, co możesz z nim zrobić. Przeczytaj wszystkie zawarte w nim komentarze, gdyż zapewnia on dużą elastyczność w zakresie zarządzania zasobami systemu poprzez ograniczanie użytkowników/grup na różnych poziomach.
Linie, które należy dodać, przyjmują następujące parametry:
<domain> <type> <item> <value>
Oto przykład ustawienia miękkich i twardych limitów dla użytkownika marin:
## Example hard limit for max opened files
marin hard nofile 4096
## Example soft limit for max opened files
marin soft nofile 1024
Końcowe przemyślenia
W tym krótkim artykule przedstawiono podstawowy przykład sprawdzania i konfigurowania limitów globalnych i na poziomie użytkownika dla maksymalnej liczby otwartych plików.
Chociaż dopiero zarysowaliśmy powierzchnię, gorąco zachęcam do bardziej szczegółowego zapoznania się i przeczytania plików /etc/sysctl.conf i /etc/security/limits.conf oraz nauczyć się z nich korzystać. Któregoś dnia będą dla ciebie bardzo pomocne.