Cum se setează ulimit și limita descriptorilor de fișiere pe serverele Linux

introducere: provocările precum numărul de fișiere deschise în oricare dintre mediile de producție au devenit obișnuite acum o zi. Deoarece multe aplicații care sunt bazate pe Java și bazate pe Apache, se instalează și se configurează, ceea ce poate duce la prea multe fișiere deschise, descriptori de fișiere etc. Dacă aceasta depășește limita implicită setată, atunci se pot confrunta cu probleme de control al accesului și provocări de deschidere a fișierelor. Multe medii de producție vin în impas fel de situații din cauza asta.

ulimit-number-openfiles-linux-server

Din fericire, avem comanda „ulimit” în oricare dintre serverele bazate pe Linux, prin care se poate vedea/seta/obține numărul de fișiere deschise detalii de stare / configurare. Această comandă este echipată cu mai multe opțiuni și cu această combinație se poate seta numărul de fișiere deschise. Următoarele sunt comenzi pas cu pas cu exemple explicate în detaliu.

pentru a vedea care este limita actuală de fișiere deschise în orice sistem Linux

pentru a obține limita de fișiere deschise pe orice server Linux, executați următoarea comandă,

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

numărul de mai sus arată că utilizatorul poate deschide fișierul ‘146013’ pe sesiunea de conectare a utilizatorului.

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

Acest lucru indică în mod clar că sistemele de operare Linux individuale au un număr diferit de fișiere deschise. Aceasta se bazează pe dependențe și aplicații care rulează în sistemele respective.

comanda ulimit :

după cum sugerează și numele, ulimit (user limit) este utilizat pentru a afișa și a seta limita de resurse pentru utilizatorul conectat.Când rulăm comanda ulimit cu -o opțiune atunci se va imprima limita tuturor resurselor pentru utilizatorul logat. Acum să rulăm „ulimit-a” pe sistemele Ubuntu / Debian și CentOS,

sistemul 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

sistemul 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

după cum putem vedea aici diferite sisteme de operare au limite diferite stabilite. Toate aceste limite pot fi configurate/modificate folosind comanda „ulimit”.

pentru a afișa limita de resurse individuale, apoi trece parametrul individual în comanda ulimit, unele dintre parametrii sunt enumerate mai jos:

  • ulimit-n –> se va afișa numărul de fișiere deschise limită
  • ulimit-c –> se afișează Dimensiunea fișierului de bază
  • umilit-u –> va afișa limita maximă a procesului de utilizator pentru utilizatorul conectat.
  • ulimit-f –> va afișa dimensiunea maximă a fișierului pe care utilizatorul o poate avea.
  • umilit-m –> va afișa dimensiunea maximă a memoriei pentru utilizatorul conectat.
  • ulimit-v – > va afișa limita maximă a dimensiunii memoriei

utilizați comenzile de mai jos Verificați limitele hard și soft pentru numărul de fișiere deschise pentru utilizatorul conectat

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

cum să remediați problema când a fost atinsă limita numărului de fișiere maxime ?

Să presupunem că serverul nostru Linux a atins limita numărului maxim de fișiere deschise și dorim să extindem această limită la nivel de sistem, de exemplu dorim să setăm 100000 ca limită a numărului de fișiere deschise.

utilizați comanda sysctl pentru a trece fs.fișier-max parametru pentru a kernel pe zbor, executa sub comanda ca utilizator root,

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

modificările de mai sus vor fi active până la următoarea repornire, astfel încât să facă aceste modificări persistente în întreaga repornire, editați fișierul/etc / sysctl.conf și adăugați același parametru,

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

salvați și ieșiți din fișier,

rulați comanda de dedesubt pentru a face modificările de mai sus în vigoare imediat fără deconectare și repornire.

root@ubuntu~]# sysctl -p

verificați acum dacă noile modificări sunt în vigoare sau nu.

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

utilizați comanda de mai jos pentru a afla câți descriptori de fișiere sunt utilizați în prezent:

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

notă:- comanda „sysctl-p” este utilizată pentru a comite modificările fără repornire și deconectare.

setați limita de resurse la nivel de utilizator prin limită.fișier conf

„/etc/sysctl.conf ” fișier este folosit pentru a seta sistemul limită de resurse la nivel, dar dacă doriți să setați limita de resurse pentru utilizator specific, cum ar fi Oracle, MariaDB și Apache, atunci acest lucru poate fi realizat prin „/etc/security/limits.conf ” fișier.

limita eșantionului.conf este prezentat mai jos,

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

limite-conf-linux-part1

limite-conf-linux-part2

Să presupunem că vrem să setăm limita hard și soft pe numărul de deschideți fișierele pentru utilizatorul linuxtechi și pentru utilizatorul Oracle setați limita hard și soft la numărul de procese deschise, editați fișierul „/etc/security/limits.conf ” și adăugați următoarele linii

# 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

Salvați& ieșiți din fișier.

notă: În cazul în care doriți să puneți limita de resurse pe un grup în loc de utilizatori, atunci poate fi posibilă și prin limit.fișierul conf, în locul numelui de utilizator , tastați @<Group_Name> și restul elementelor vor fi aceleași, exemplul este prezentat mai jos,

# 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

verificați dacă noile modificări sunt în vigoare sau nu,

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

notă: altă comandă folosită în mare măsură este „lsof” care este folosit pentru a afla „câte fișiere sunt deschise în prezent”. Această comandă este foarte utilă pentru administratori.

concluzie:

asa cum am mentionat in sectiunea de introducere comanda „ulimit” este foarte puternica si ajuta la configurarea si asigurarea instalarii aplicatiilor fara blocaje. Această comandă ajută la stabilirea multe din numărul de limitări de fișiere în servere bazate pe Linux.

Lasă un răspuns

Adresa ta de email nu va fi publicată.