Jak ustawić limit ulimit i deskryptorów plików na serwerach Linuksowych

wprowadzenie: wyzwania, takie jak liczba otwartych plików w dowolnym środowisku produkcyjnym, stały się powszechne. Ponieważ wiele aplikacji opartych na Javie i Apache jest instalowanych i konfigurowanych, co może prowadzić do zbyt wielu otwartych plików, deskryptorów plików itp. Jeśli przekroczy to ustawiony domyślny limit, mogą wystąpić problemy z kontrolą dostępu i wyzwania związane z otwieraniem plików. Z tego powodu wiele środowisk produkcyjnych przestaje działać.

ulimit-number-openfiles-linux-server

na szczęście mamy polecenie „ulimit” na dowolnym serwerze opartym na Linuksie, dzięki któremu można zobaczyć/ustawić/uzyskać liczbę otwartych plików / szczegóły konfiguracji. To polecenie jest wyposażone w wiele opcji i dzięki tej kombinacji można ustawić liczbę otwartych plików. Poniżej znajdują się polecenia krok po kroku z przykładami objaśnionymi szczegółowo.

aby zobaczyć, jaki jest obecny limit otwartych plików w dowolnym systemie Linux

aby uzyskać limit otwartych plików na dowolnym serwerze Linux, wykonaj następujące polecenie,

# cat /proc/sys/fs/file-max146013

powyższa liczba pokazuje, że użytkownik może otworzyć plik '146013′ na sesję logowania użytkownika.

# cat /proc/sys/fs/file-max149219# cat /proc/sys/fs/file-max73906

To Wyraźnie wskazuje, że poszczególne systemy operacyjne Linux mają różną liczbę otwartych plików. Jest to oparte na zależnościach i aplikacjach, które działają w odpowiednich systemach.

Komenda ulimit :

jak sama nazwa wskazuje, ulimit (user limit) służy do wyświetlania i ustawiania limitu zasobów dla zalogowanego użytkownika.Gdy uruchomimy polecenie ulimit z opcją-a wtedy wypisane zostaną wszystkie limity zasobów dla zalogowanego użytkownika. Teraz uruchom „ulimit-a” na systemach Ubuntu / Debian i CentOS,

System Ubuntu/Debian,

shashi@Ubuntu ~}$ ulimit -acore file size (blocks, -c) 0data seg size (kbytes, -d) unlimitedscheduling priority (-e) 0file size (blocks, -f) unlimitedpending signals (-i) 5731max locked memory (kbytes, -l) 64max memory size (kbytes, -m) unlimitedopen files (-n) 1024 pipe size (512 bytes, -p) 8POSIX message queues (bytes, -q) 819200real-time priority (-r) 0stack size (kbytes, -s) 8192cpu time (seconds, -t) unlimitedmax user processes (-u) 5731virtual memory (kbytes, -v) unlimitedfile locks (-x) unlimited

System CentOS

shashi@centos ~}$ ulimit -acore file size (blocks, -c) 0data seg size (kbytes, -d) unlimitedscheduling priority (-e) 0file size (blocks, -f) unlimitedpending signals (-i) 5901max locked memory (kbytes, -l) 64max memory size (kbytes, -m) unlimitedopen files (-n) 1024pipe size (512 bytes, -p) 8POSIX message queues (bytes, -q) 819200real-time priority (-r) 0stack size (kbytes, -s) 8192cpu time (seconds, -t) unlimitedmax user processes (-u) 5901virtual memory (kbytes, -v) unlimitedfile locks (-x) unlimited

jak widać tutaj różne systemy operacyjne mają ustawione różne limity. Wszystkie te limity można skonfigurować / zmienić za pomocą polecenia „ulimit”.

aby wyświetlić indywidualny limit zasobów, przekaż pojedynczy parametr w poleceniu ulimit, niektóre parametry są wymienione poniżej:

  • ulimit-n –> wyświetli limit liczby otwartych plików
  • ulimit-C –> wyświetli Rozmiar pliku podstawowego
  • umilit-u –> wyświetli maksymalny limit procesu dla zalogowanego użytkownika.
  • ulimit-f –> wyświetli maksymalny rozmiar pliku, jaki może mieć użytkownik.
  • umilit-m –> wyświetli maksymalny rozmiar pamięci dla zalogowanego użytkownika.
  • ulimit-v –> wyświetli limit maksymalnego rozmiaru pamięci

użyj poniższych poleceń sprawdź twarde i miękkie limity liczby otwartych plików dla zalogowanego użytkownika

shashi@Ubuntu ~}$ ulimit -Hn1048576shashi@Ubuntu ~}$ ulimit -Sn1024

jak rozwiązać problem, gdy osiągnięto limit maksymalnej liczby plików ?

Załóżmy, że nasz serwer Linux osiągnął limit maksymalnej liczby otwartych plików i chcemy rozszerzyć ten limit na cały system, na przykład chcemy ustawić 100000 jako limit liczby otwartych plików.

użyj polecenia sysctl, aby przekazać fs.parametr file-max do jądra w locie, wykonaj pod poleceniem jako użytkownik root,

root@ubuntu~]# sysctl -w fs.file-max=100000fs.file-max = 100000

powyższe zmiany będą aktywne do następnego restartu, więc aby te zmiany trwały podczas restartu, Edytuj plik /etc/sysctl.conf i dodaj ten sam parametr,

root@ubuntu~]# vi /etc/sysctl.conffs.file-max = 100000

Zapisz i zakończ plik,

uruchom poniższą komendę, aby powyższe zmiany weszły w życie natychmiast bez wylogowania i ponownego uruchomienia.

root@ubuntu~]# sysctl -p

teraz sprawdź, czy nowe zmiany są skuteczne, czy nie.

root@ubuntu~]# cat /proc/sys/fs/file-max100000

użyj poniższego polecenia, aby dowiedzieć się, ile deskryptorów plików jest obecnie używanych:

# more /proc/sys/fs/file-nr1216 0 100000

Uwaga:- polecenie „sysctl-p” służy do zatwierdzania zmian bez restartu i wylogowania.

Ustaw limit zasobów na poziomie użytkownika poprzez limit.plik conf

„/etc/sysctl.plik conf „służy do ustawiania limitu zasobów dla całego systemu, ale jeśli chcesz ustawić limit zasobów dla określonego użytkownika, takiego jak Oracle, MariaDB i Apache, można to osiągnąć za pomocą” / etc / security / limits.plik conf.

Limit próbki.conf jest pokazany poniżej,

root@ubuntu~]# cat /proc/sys/fs/file-max

limity-conf-linux-part1

limity-conf-linux-part2

Załóżmy, że chcemy ustawić twardy i miękki limit na liczbę open files for linuxtechi user and for Oracle user set hard and soft limit on number of open process, edytuj plik „/etc/security/limits.conf” i dodaj następujące linie

# hard limit for max opened files for linuxtechi userlinuxtechi hard nofile 4096# soft limit for max opened files for linuxtechi userlinuxtechi soft nofile 1024# hard limit for max number of process for oracle useroracle hard nproc 8096# soft limit for max number of process for oracle useroracle soft nproc 4096

Zapisz& zamknij plik.

Uwaga: Jeśli chcesz umieścić limit zasobów na grupie zamiast użytkowników, może to być również możliwe za pomocą limitu.plik conf, zamiast nazwy użytkownika , wpisz @<Group_Name> I reszta elementów będzie taka sama, przykład pokazany poniżej,

# hard limit for max opened files for sysadmin group@sysadmin hard nofile 4096 # soft limit for max opened files for sysadmin group@sysadmin soft nofile 1024

sprawdź, czy nowe zmiany są skuteczne, czy nie,

~]# su - linuxtechi~]$ ulimit -n -H4096~]$ ulimit -n -S1024~]# su - oracle~]$ ulimit -H -u8096~]$ ulimit -S -u4096

Uwaga: inne najczęściej używane polecenie to „lsof”, które służy do sprawdzenia „ile plików jest aktualnie otwartych”. To polecenie jest bardzo pomocne dla administratorów.

wnioski:

jak wspomniano w sekcji wprowadzającej „ulimit” polecenie jest bardzo potężne i pomaga skonfigurować i upewnić się, że instalacja aplikacji jest płynniejsza bez żadnych wąskich gardeł. To polecenie pomaga w naprawieniu wielu ograniczeń plików na serwerach opartych na Linuksie.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.