Sobes.tech
Middle

რას იცნობთ ulimits-ის შესახებ და როგორ გამოიყენოთ ისინი Linux სისტემებში?

sobes.tech AI

პასუხი AI-სგან

Ulimits (მომხმარებლის შეზღუდვები) — ეს არის შეზღუდვები, რომლებიც განსაზღვრავს Linux ოპერაციული სისტემის პროცესების რესურსების მოხმარებას. ისინი ეხმარებიან თავიდან აიცილონ სისტემის რესურსების ამოწურვა ერთ პროცესზე და უზრუნველყონ სტაბილურობა:

ძირითადი რესურსები, რომლებიც შეიძლება შეზღუდული იყოს ulimits-ის საშუალებით:

  • CPU დრო (წამები): მაქსიმალური CPU მუშაობის დრო პროცესისთვის:
  • ფაილის ზომა (ბლოკები): მაქსიმალური ფაილის ზომა, რომელიც მომხმარებელმა შეიძლება შექმნას:
  • მონაცემთა სეგმენტის ზომა (კილობაიტები): პროცესის მონაცემთა სეგმენტის მაქსიმალური ზომა:
  • სტაკის ზომა (კილობაიტები): პროცესის სტაკის მაქსიმალური ზომა:
  • კორპი ფაილის ზომა (ბლოკები): კორპი დამპის მაქსიმალური ზომა:
  • რეზიდენტული მეხსიერების ზომა (კილობაიტები): პროცესის რეზიდენტული მეხსიერების მაქსიმალური ზომა (სხვადასხვა მხარდაჭერა ან მხოლოდ "მოწესრიგებული" შეზღუდვა):
  • პროცესების რაოდენობა: მაქსიმალური პროცესი, რომელიც მომხმარებელმა შეიძლება შექმნას:
  • გახსნილი ფაილები: მაქსიმალური რაოდენობა ფაილების, რომელიც პროცესი შეიძლება გახსნას:
  • ლოკირებული მეხსიერება ([კილობაიტები]): მაქსიმალური მოცულობა RAM-ში ლოკირებული მეხსიერების:
  • მომხმარებლის პროცესების მაქსიმალური რაოდენობა: კონკრეტული მომხმარებლისთვის ხელმისაწვდომი პროცესების მაქსიმალური რაოდენობა (სხვა მომხმარებლის ID-ის გათვალისწინების გარეშე):
  • მოლოდინში სიგნალები: მაქსიმალური რაოდენობა სიგნალების, რომლებიც შეიძლება ელოდოს რიგში კონკრეტული პროცესისთვის:
  • Msgqueue ზომა (ბაიტები): მაქსიმალური ზომა შეტყობინებების რიგის POSIX:
  • რეალურ დროზე პრიორიტეტი: მაქსიმალური რეალურ დროზე პრიორიტეტი, რომელიც შეიძლება დაყენდეს:
  • Nice პრიორიტეტი: მაქსიმალური "მოწესრიგებული" მნიშვნელობა:
  • რეალურ დროზე ლოკირებული მეხსიერება (კილობაიტები): მაქსიმალური ზომა მეხსიერების, რომელიც ლოკირებულია რეალურ დროზე დავალებებისთვის:

Ulimits-ები ორი ტიპისაა:

  • მოწესრიგებული შეზღუდვა (Soft limit): მიმდინარე, აქტიურად გამოყენებული შეზღუდვა:
  • მკაცრი შეზღუდვა (Hard limit): მაქსიმალური შესაძლო შეზღუდვა, რომელიც ადმინისტრატორმა დააყენა:

მიმდინარე ulimits-ის ნახვა:

გამოიყენეთ ulimit ბრძანება შელში (მაგალითად, bash):

# ყველა soft limits-ის ჩვენება
ulimit -a

# hard limit-ის ჩვენება გახსნილი ფაილებისთვის
ulimit -Hn

Ulimits-ის დაყენება:

Ulimits-ებს შეიძლება დროებით დაყენება მიმდინარე სესიის ან პროცესისთვის, ან მუდმივად:

დროებითი დაყენება:

გამოიყენეთ ulimit ბრძანება შელში. ეს მოქმედებს მხოლოდ მიმდინარე შელზე და მისგან დაწყებული შვილობილი პროცესებზე:

# გახსნილი ფაილების soft limit-ის დაყენება 4096-ზე
ulimit -Sn 4096

# პროცესების რაოდენობის hard limit-ის დაყენება 100-ზე
ulimit -Hu 100

მუდმივი დაყენება:

რედაქტირება /etc/security/limits.conf ფაილში ან ფაილებში /etc/security/limits.d/ დირექტორიაში:

# <domain>  <type>  <item>  <value>
# დომენი შეიძლება იყოს: user (@group), group (@group), wildcard (*)
# ტიპი: soft, hard, - (ორივე)
# ელემენტი - რესურსის ტიპი (nofile, nproc და სხვა)
# მნიშვნელობა - შეზღუდვის მნიშვნელობა

*       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-ის და სტაბილურობის უზრუნველყოფის მნიშვნელოვანი ნაწილი, რათა სამუშაო გარემოში პროგრამების მუშაობა იყოს პროგნოზირებადი და სტაბილური.