Innledning: Utfordringer som antall åpne filer i noen av produksjonsmiljøet har blitt vanlig nå en dag. Siden mange applikasjoner Som Er Java-baserte Og Apache-baserte, blir installert og konfigurert, noe som kan føre til for mange åpne filer, filbeskrivelser etc. Hvis dette overskrider standardgrensen som er angitt, kan man møte tilgangskontrollproblemer og filåpningsutfordringer. Mange produksjonsmiljøer kommer til å stå stille slags situasjoner på grunn av dette.
Heldigvis har Vi» ulimit » – kommandoen i En Hvilken som helst Linux-basert server, hvor man kan se/sett/få antall filer åpne status/konfigurasjonsdetaljer. Denne kommandoen er utstyrt med mange alternativer, og med denne kombinasjonen kan man angi antall åpne filer. Følgende er trinnvise kommandoer med eksempler forklart i detalj.
for å se hva som er den nåværende åpne filgrensen i Et Hvilket Som Helst Linux-System
for å få åpen filgrense på En Hvilken som helst Linux-server, utfør følgende kommando,
# cat /proc/sys/fs/file-max146013
tallet ovenfor viser at brukeren kan åpne ‘146013’ – fil per brukerinnloggsøkt.
# cat /proc/sys/fs/file-max149219# cat /proc/sys/fs/file-max73906
dette tyder tydelig på at enkelte Linux-operativsystemer har forskjellig antall åpne filer. Dette er basert på avhengigheter og applikasjoner som kjører i respektive systemer.
ulimit kommando :
som navnet antyder, brukes ulimit (brukerbegrensning) til å vise og angi ressursgrense for innlogget bruker.Når vi kjører ulimit-kommandoen med-a-alternativet, vil det skrive ut alle ressursens grense for den innloggede brukeren. La oss nå kjøre «ulimit-a» På Ubuntu / Debian og CentOS systemer,
Ubuntu/Debian System,
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
CentOS System
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
som vi kan se her har FORSKJELLIGE OS forskjellige grenser satt. Alle disse grensene kan konfigureres / endres ved hjelp av» ulimit » kommandoen.
for å vise den enkelte ressursgrense og deretter passere den enkelte parameter i ulimit kommando, noen av parameterne er listet opp nedenfor:
- ulimit-n –> det viser størrelsen på kjernen fil
- umilit-u –> det vil vise maksimal brukerprosess grense for den innloggede brukeren.
- ulimit –f – > det vil vise maksimal filstørrelse som brukeren kan ha.
- umilit-m – > det vil vise maksimal minnestørrelse for innlogget bruker.
- ulimit-v –> det vil vise maksimal minnestørrelsesgrense
bruk under kommandoer kontroller harde og myke grenser for antall åpne filer for den innloggede brukeren
shashi@Ubuntu ~}$ ulimit -Hn1048576shashi@Ubuntu ~}$ ulimit -Sn1024
hvordan løser du problemet når grense På Antall Maksimale Filer ble nådd?
la Oss anta At Vår Linux-server har nådd grensen for maksimalt antall åpne filer og ønsker å utvide det grensesystemet bredt, for eksempel vil vi sette 100000 som grense for antall åpne filer.
Bruk sysctl-kommandoen til å passere fs.fil-max parameter til kjernen på fly, kjøre under kommando som root bruker,
root@ubuntu~]# sysctl -w fs.file-max=100000fs.file-max = 100000
over endringene vil være aktiv til neste omstart, så for å gjøre disse endringene vedvarende over omstart, redigere filen / etc / sysctl.conf og legg til samme parameter,
root@ubuntu~]# vi /etc/sysctl.conffs.file-max = 100000
lagre og avslutt fil,
Kjør kommandoen under for å gjøre endringer i kraft umiddelbart uten å logge ut og starte på nytt.
root@ubuntu~]# sysctl -p
kontroller nå om nye endringer er i kraft eller ikke.
root@ubuntu~]# cat /proc/sys/fs/file-max100000
Bruk kommandoen nedenfor for å finne ut hvor mange filbeskrivelser som for tiden brukes:
# more /proc/sys/fs/file-nr1216 0 100000
Merk:- Kommandoen «sysctl-p» brukes til å begå endringene uten omstart og utlogging.
Angi ressursgrense På brukernivå via grense.conf fil
» / etc / sysctl.conf «fil brukes til å sette ressursgrense system bredt, men hvis du vil sette ressursgrense for bestemt bruker Som Oracle, MariaDB Og Apache, kan dette oppnås via» / etc / security / limits.conf » fil.
Prøvegrense.conf er vist nedenfor,
root@ubuntu~]# cat /proc/sys/fs/file-max
La oss anta at vi ønsker å sette hard og myk grense på antall åpne filer for linuxtechi bruker og for oracle bruker satt hard og myk grense på antall åpne prosessen, redigere filen «/etc/sikkerhet/grenser.conf » og legg til følgende linjer
# 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
Lagre& avslutt filen.
Merk: Hvis du vil sette ressursgrense på en gruppe i stedet for brukere, kan det også være mulig via grense.conf fil , i stedet for brukernavn, type @ <Group_Name> og resten av elementene vil være samme, eksempel er vist nedenfor,
# 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
Kontroller om nye endringer er i kraft eller ikke,
~]# su - linuxtechi~]$ ulimit -n -H4096~]$ ulimit -n -S1024~]# su - oracle~]$ ulimit -H -u8096~]$ ulimit -S -u4096
merk: andre majorly brukte kommandoen Er «lsof» Som Brukes for å finne ut «hvor mange filer er åpnet for tiden». Denne kommandoen er svært nyttig for admins.
Konklusjon:
som nevnt i introduksjonsdelen «ulimit» kommandoen er veldig kraftig og hjelper en til å konfigurere og sørge for at applikasjonsinstallasjoner er jevnere uten flaskehalser. Denne kommandoen hjelper med å fikse mange av antall filbegrensninger I Linux – baserte servere.