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ć.
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
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.