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