Sobes.tech
Middle

Ինչ եք գիտակցում ulimits-ի մասին և ինչպես օգտագործել դրանք Linux համակարգերում?

sobes.tech AI

Պատասխան AI-ից

Ulimits (օգտագործողի սահմանափակումներ) — դա սահմանափակումներ են, որոնք սահմանում են Linux օպերացիոն համակարգի գործընթացները ռեսուրսների սպառման համար: Դրանք օգնում են կանխել համակարգի ռեսուրսների սպառումը մեկ գործընթացի կողմից և ապահովել կայունությունը:

Հիմնական ռեսուրսները, որոնք կարելի է սահմանափակել ulimits-ով՝

  • CPU ժամանակ (վայրկյաններ): Մաքսիմալ CPU աշխատանքային ժամանակը գործընթացի համար:
  • Ֆայլի չափը (բլոկներ): Մաքսիմալ ֆայլի չափը, որը կարող է ստեղծել օգտվողը:
  • Տվյալների հատվածի չափը (կիլոբայթներ): Մաքսիմալ տվյալների հատվածի չափը գործընթացի:
  • Ստակ չափը (կիլոբայթներ): Մաքսիմալ ստակ գործընթացի:
  • Կոր բայթ ֆայլի չափը (բլոկներ): Կոր-դամպի մաքսիմալ չափը:
  • Ռեզիդենտ սեթի չափը (կիլոբայթներ): Մաքսիմալ ռեզիդենտ հիշողության չափը գործընթացի (սովորաբար չի աջակցվում կամ ունի միայն "թեթև" սահմանափակում):
  • Պրոցեսների թիվը: Մաքսիմալ պրոցեսների թիվը, որը կարող է ստեղծել օգտվողը:
  • Բաց ֆայլեր: Մաքսիմալ ֆայլերի թիվը, որը կարող է բացել գործընթացը:
  • Ապամոքված հիշողություն ([կիլոբայթներ]): Մաքսիմալ հիշողության ծավալը, որը կարող է լինել բլոկավորված RAM-ում:
  • Մաքս օգտվողի պրոցեսներ: Մաքսիմալ պրոցեսների թիվը, որը հասանելի է կոնկրետ օգտվողին:
  • Սիգնալների սպասում: Մաքսիմալ թվով սիգնալներ, որոնք կարող են սպասել հերթում կոնկրետ պրոցեսի համար:
  • Հաղորդագրությունների հերթի չափը (բայթներ): Մաքսիմալ հաղորդագրությունների հերթի չափը POSIX:
  • Անցյալ ժամանակի առաջնահերթությունը: Մաքսիմալ իրական ժամանակի առաջնահերթությունը, որը կարող է սահմանվել:
  • Նայիչ առաջնահերթությունը: Մաքսիմալ "թեթև" առաջնահերթության արժեքը:
  • Անցյալ ժամանակի փակված հիշողություն (կիլոբայթներ): Մաքսիմալ չափը հիշողության, որը փակված է իրական ժամանակի խնդիրների համար:

Ulimits-ները լինում են երկու տեսակի՝

  • Թեթև սահմանափակում (Soft limit): Ընթացիկ, ակտիվ կիրառվող սահմանափակում:
  • Խիստ սահմանափակում (Hard limit): Մաքսիմալ հնարավոր սահմանափակումը, որը սահմանում է ադմինիստրատորը:

Ընթացիկ ulimits-ների դիտում՝

Օգտագործեք ulimit հրամանը շելում (օրինակ՝ bash):

# Ցույց տալ բոլոր թեթև սահմանափակումները
ulimit -a

# Ցույց տալ բաց ֆայլերի խիստ սահմանափակումը
ulimit -Hn

Ulimits սահմանելու ձևը՝

Ulimits-ները կարելի է ժամանակավոր սահմանել ընթացիկ սեսիայի կամ պրոցեսի համար, կամ մշտական:

Անցյալ սահմանափակում:

Օգտագործեք ulimit հրամանը շելում:

# Սահմանել բաց ֆայլերի թեթև սահմանափակումը 4096
ulimit -Sn 4096

# Սահմանել պրոցեսների քանակի խիստ սահմանափակումը 100
ulimit -Hu 100

Մշտական սահմանափակում:

Խմբագրել /etc/security/limits.conf ֆայլը կամ ֆայլերը /etc/security/limits.d/ թղթապանակում:

# <domain>  <type>  <item>  <value>
# Դոմենը կարող է լինել: user (@group), group (@group), wildcard (*)
# Type - կարող է լինել soft, hard, - (երկուսն էլ)
# Item - ռեսուրսի տեսակ (nofile, nproc և այլն)
# Value - սահմանափակման արժեք

*       soft    nofile  4096       # Բոլոր օգտվողները, soft սահմանափակումը բաց ֆայլերի համար 4096
@mygroup hard    nproc   256        # mygroup խմբի համար, hard սահմանափակումը պրոցեսների համար 256
myuser  -       stack   8192       # myuser օգտվողի համար, երկու սահմանափակում՝ ստակ 8192 կԲ

Փոփոխությունների հետո /etc/security/limits.conf ֆայլում՝ անհրաժեշտ է վերա մուտք գործել համակարգ՝ փոփոխությունները ուժի մեջ մտնելու համար:

Ulimits հաճախ օգտագործվում են՝

  • "fork bombs" կանխելու համար (պրոցեսներ, որոնք ստեղծում են բազմաթիվ դուստր պրոցեսներ):
  • Հիշողության սահմանափակումներ, որոնք սպառում են պրոցեսները՝ կանխելու համար "out of memory" իրավիճակները:
  • Բաց ֆայլերի քանակի սահմանափակումներ, որոնք կարևոր են ցանցային հավելվածների և տվյալների բազաների համար:
  • CPU ռեսուրսների սպառման վերահսկողություն:

Ulimits-ների օգտագործումը կարևոր մաս է համակարգի hardening-ի և կայունության ապահովման համար՝ արտադրական միջավայրում հավելվածների աշխատանքը կանխատեսելի և կայուն դարձնելու համար։