Ce știi despre limitele ulimits în sistemele Linux?
sobes.tech AI
Răspuns de la AI
ulimits (limitele utilizatorilor) în Linux este un mecanism al nucleului care permite stabilirea de restricții asupra consumului de resurse de sistem pentru utilizatori, grupuri sau procese. Ele ajută la prevenirea epuizării resurselor de către un singur proces, ceea ce poate duce la instabilitate sau la căderea sistemului.
Categoriile principale de restricții:
- Numărul de procese: Numărul maxim de procese copil pe care un utilizator sau proces îl poate crea.
- Dimensiunea fișierelor: Dimensiunea maximă a unui fișier pe care un utilizator sau proces îl poate crea.
- Numărul de fișiere deschise: Numărul maxim de descriptori de fișiere pe care un proces îl poate deschide.
- Dimensiunea stivei: Dimensiunea maximă a stivei pentru procese.
- Utilizarea memoriei: Restricții asupra memoriei virtuale (dimensiunea setului resident, dimensiunea segmentului de date și altele).
- Prioritatea de planificare: Prioritatea maximă cu care poate funcționa un proces.
- Blocările fișierelor: Numărul de blocări de fișiere.
Gestionarea ulimits se face prin:
-
Comanda
ulimit(încorporată în shell): Permite vizualizarea și stabilirea limitelor pentru shell-ul curent și procesele sale copil.# Vizualizarea tuturor limitelor curente (soft și hard) ulimit -a # Vizualizarea limitei pentru numărul de fișiere deschise (soft) ulimit -n # Stabilirea limitei soft pentru numărul de fișiere deschise la 4096 ulimit -n 4096 # Stabilirea limitei hard pentru numărul de fișiere deschise la 8192 (doar pentru root sau dacă limita soft este mai mică) ulimit -Hn 8192 -
Fișierul
/etc/security/limits.conf: Permite stabilirea de limite permanente pentru utilizatori specifici, grupuri sau toți utilizatorii (*) la nivel de sistem. Modificările intră în vigoare după următoarea autentificare a utilizatorului.# Sintaxă: <domeniu> <tip> <element> <valoare> # domeniu: utilizator (@grup, *) # tip: soft | hard # element: core, nproc, nofile, virtualmem și altele # valoare: valoarea limitei # Limita pentru utilizatorul 'devops' pentru numărul de fișiere deschise (soft=4096, hard=8192) devops soft nofile 4096 devops hard nofile 8192 # Limita pentru grupul 'developers' pentru numărul de procese (hard=1000) @developers hard nproc 1000 # Limita pentru dimensiunea fișierului pentru toți utilizatorii (hard=nelimitat) * hard fsize unlimited -
Apeluri de sistem (de exemplu,
setrlimit,getrlimit): Programele pot seta sau obține limitele proprii în timpul execuției. Procesele fără privilegii pot doar să reducă limitele dure sau să modifice limitele moi până la valoarea limitei dure. Root poate seta orice limită.
Înțelegerea ulimits este critică pentru depanarea problemelor legate de resurse (de exemplu, "prea multe fișiere deschise"), prevenirea atacurilor DoS la nivel de resurse și ajustarea performanței aplicațiilor. Este deosebit de important la pornirea serviciilor, containerelor sau bazelor de date.