Čo viete o ulimits v systémoch Linux?
sobes.tech AI
Odpoveď od AI
ulimits (užívateľské limity) v Linuxe — je to mechanizmus jadra, ktorý umožňuje nastavovať obmedzenia na spotrebu systémových zdrojov pre používateľov, skupiny alebo procesy. Pomáhajú predísť vyčerpaniu zdrojov jedným procesom, čo môže viesť k nestabilite alebo zlyhaniu systému.
Hlavné kategórie obmedzení:
- Počet procesov: Maximálny počet potomkov, ktoré môže používateľ alebo proces vytvoriť.
- Veľkosť súborov: Maximálna veľkosť súboru, ktorý môže používateľ alebo proces vytvoriť.
- Počet otvorených súborov: Maximálny počet súborových deskriptorov, ktoré môže proces otvoriť.
- Veľkosť zásobníka: Maximálna veľkosť zásobníka pre procesy.
- Využitie pamäte: Obmedzenia na virtuálnu pamäť (resident set size, veľkosť dátového segmentu a ďalšie).
- Priorita plánovania: Maximálna priorita, s ktorou môže proces pracovať.
- Zámky súborov: Počet zámkov súborov.
Správa ulimits sa vykonáva cez:
-
Príkaz
ulimit(vestavěný do shellu): Umožňuje zobraziť a nastaviť limity pre aktuálny shell a jeho potomkov.# Zobrazenie všetkých aktuálnych limitov (soft a hard) ulimit -a # Zobrazenie limitu na počet otvorených súborov (soft) ulimit -n # Nastavenie soft limitu na počet otvorených súborov na 4096 ulimit -n 4096 # Nastavenie hard limitu na počet otvorených súborov na 8192 (len pre root alebo ak je soft limit nižší) ulimit -Hn 8192 -
Súbor
/etc/security/limits.conf: Umožňuje nastaviť trvalé limity pre konkrétnych používateľov, skupiny alebo všetkých používateľov (*) na systémovej úrovni. Zmeny nadobúdajú účinnosť po ďalšom prihlásení používateľa.# Syntax: <domain> <type> <item> <value> # domain: používateľ (@skupina, *) # type: soft | hard # item: core, nproc, nofile, virtualmem a ďalšie # value: hodnota obmedzenia # Obmedzenie pre používateľa 'devops' na počet otvorených súborov (soft=4096, hard=8192) devops soft nofile 4096 devops hard nofile 8192 # Obmedzenie pre skupinu 'developers' na počet procesov (hard=1000) @developers hard nproc 1000 # Obmedzenie na veľkosť súboru pre všetkých používateľov (hard=unlimited) * hard fsize unlimited -
Systémové volania (napríklad
setrlimit,getrlimit): Programy môžu programovo nastavovať alebo získavať vlastné limity počas behu. Procesy bez privilégií môžu len znižovať svoje tvrdé limity alebo meniť mäkké limity na hodnotu nie vyššiu ako tvrdý. Root môže nastavovať akékoľvek limity.
Porozumenie ulimits je kľúčové pre odstraňovanie problémov s zdrojmi (napríklad "príliš veľa otvorených súborov"), prevenciu DoS útokov na úrovni zdrojov a ladenie výkonu aplikácií. Obzvlášť dôležité pri spúšťaní služieb, kontajnerov alebo databáz.