Hur man ställer in ulimit och filbeskrivningar gräns på Linux-servrar

introduktion: utmaningar som antalet öppna filer i någon av produktionsmiljön har blivit vanligt nu en dag. Eftersom många applikationer som är Java-baserade och Apache-baserade, installeras och konfigureras, vilket kan leda till för många öppna filer, filbeskrivningar etc. Om detta överskrider standardgränsen som är inställd kan man möta åtkomstkontrollproblem och filöppningsutmaningar. Många produktionsmiljöer kommer till stillastående typ av situationer på grund av detta.

ulimit-number-openfiles-linux-server

lyckligtvis har vi ”ulimit” – kommandot i någon av Linux-baserade servern, genom vilken man kan se/Ställa in/Få antal filer Öppna status/konfigurationsdetaljer. Detta kommando är utrustat med många alternativ och med denna kombination kan man ställa in antal öppna filer. Följande är steg-för-steg-kommandon med exempel som förklaras i detalj.

för att se vad som är den nuvarande öppna filgränsen i något Linux-System

för att få öppen filgräns på någon Linux-server, kör följande kommando,

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

ovanstående nummer visar att användaren kan öppna ”146013” – fil per användarinloggningssession.

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

detta indikerar tydligt att enskilda Linux-operativsystem har olika antal öppna filer. Detta är baserat på beroenden och applikationer som körs i respektive system.

ulimit kommando :

Som namnet antyder används ulimit (user limit) för att visa och ställa in resursgräns för inloggad användare.När vi kör ulimit kommando med-ett alternativ så kommer det att skriva ut alla resurser gräns för den inloggade användaren. Låt oss nu köra” ulimit-a”på Ubuntu / Debian och CentOS-system,

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 här har olika operativsystem olika gränser. Alla dessa gränser kan konfigureras/ändras med kommandot ”ulimit”.

för att visa den enskilda resursgränsen passerar du den enskilda parametern i ulimit-kommandot, några av parametrarna listas nedan:

  • ulimit –n- > det kommer att visa antalet öppna filer begränsa
  • ulimit –c- > det visar storleken på kärnfilen
  • umilit –u – > den visar den maximala användarprocessgränsen för den inloggade användaren.
  • ulimit – f – > det visar den maximala filstorleken som användaren kan ha.
  • umilit-m – > den visar maximal minnesstorlek för inloggad användare.
  • ulimit – v – > det kommer att visa den maximala minnesstorleksgränsen

använd under kommandon kontrollera hårda och mjuka gränser för antalet öppna filer för den inloggade användaren

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

hur åtgärdar du problemet när gränsen för antalet maximala filer uppnåddes ?

låt oss anta att vår Linux-server har nått gränsen för maximalt antal öppna filer och vill förlänga den gränsen hela systemet, till exempel vill vi ställa in 100000 som gräns för antalet öppna filer.

använd sysctl-kommandot för att skicka fs.file-max parameter till kärnan i farten, kör under kommandot som root-användare,

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

ovanstående ändringar kommer att vara aktiva tills nästa omstart, så att göra dessa ändringar ihållande över omstart, redigera filen/etc / sysctl.conf och Lägg till samma parameter,

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

spara och avsluta fil,

Kör kommandot under för att göra ovanstående ändringar i kraft omedelbart utan utloggning och omstart.

root@ubuntu~]# sysctl -p

Kontrollera nu om nya ändringar är i kraft eller inte.

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

använd kommandot nedan för att ta reda på hur många filbeskrivningar som för närvarande används:

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

Obs:- kommandot” sysctl-p ” används för att begå ändringarna utan omstart och utloggning.

Ställ in resursgräns för användarnivå via gräns.conf-fil

” / etc / sysctl.conf ” – filen används för att ställa in resursgräns i hela systemet men om du vill ställa in resursgräns för specifika användare som Oracle, MariaDB och Apache kan detta uppnås via ”/etc/security/limits.conf ” fil.

Provgräns.conf visas nedan,

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

gränser-conf-linux-part1

gränser-conf-linux-part2

låt oss anta att vi vill ställa in hård och mjuk gräns för antalet öppna filer för linuxtechi-användare och för Oracle-användare ställer in hård och mjuk gräns för antal öppna processer, redigera filen ”/etc/security/limits.conf ” och Lägg till följande rader

# 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

spara & avsluta filen.

notera: Om du vill sätta resursbegränsning på en grupp istället för användare kan det också vara möjligt via limit.conf-fil, i stället för användarnamn , typ @<Group_Name> och resten av objekten kommer att vara samma, exempel visas nedan,

# 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

kontrollera om nya ändringar är i kraft eller inte,

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

Obs: andra majorly används kommandot är ”lsof” som används för att ta reda på ”hur många filer öppnas för närvarande”. Detta kommando är till stor hjälp för administratörer.

slutsats:

som nämnts i inledningen avsnittet ”ulimit” kommandot är mycket kraftfull och hjälper en att konfigurera och se till att programinstallationer är smidigare utan flaskhalsar. Detta kommando hjälper till att fixa många av antalet filbegränsningar i Linux-baserade servrar.

Lämna ett svar

Din e-postadress kommer inte publiceras.