Wyszukiwanie w witrynie

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.