Middle
თუ მეხსიერების ზღვარი გადაჭარბდება, რა მოხდება კონტეინერთან?
sobes.tech AI
პასუხი AI-სგან
Docker კონტეინერისთვის განსაზღვრული მეხსიერების ზღვრის გადაჭარბებისას, ხდება შემდეგი ძირითადი მოვლენები:
- OOM (Out of Memory) მოვლენა: ოპერაციული სისტემის ბირთვი ამჩნევს, რომ კონტეინერის შიგნით პროცესმა სცადა მეხსიერების გამოყოფა, რომელიც აღემატება განსაზღვრულ ზღვარს.
- სიგნალი Killed: ბირთვი აგზავნის კონტეინერის შიგნით პროცესს
SIGKILLსიგნალს. ეს სიგნალი ვერ იჭერება ან იგნორირებულია კონტეინერში მუშაობის დროს. - კონტეინერის დასრულება: კონტეინერის შიგნით პროცესი ძალით დასრულდება. Docker დომენი ამჩნევს, რომ მთავარი პროცესი დასრულდა და კონტეინერის სტატუსს
Exited-ად აქცევს. - გამოსვლის კოდი: კონტეინერი დასრულდება ნულს არ უდრის კოდით (საშუალოდ 137), რაც მიუთითებს, რომ იგი ძალით დასრულდა სიგნალით.
მოქმედებები პროგრამასა და სისტემაზე:
- კონტეინერში მუშაობა შეწყდება მოულოდნელად.
- თუ განთავსებულია გადატვირთვის პოლიტიკა (
restart policy), Docker-ი შეეცდება კონტეინერის გადატვირთვას. - კონტეინერის და/ან ჰოსტის ლოგებში რეგისტრირდება OOM მოვლენა და კონტეინერის დასრულება.
მეხსიერების ზღვრის დაყენების მაგალითი:
# Docker Compose-ის მაგალითი
services:
myapp:
image: myimage
mem_limit: 512m # განსაზღვრავს მეხსიერების ზღვარს 512 მბ-ად
# Docker-ის გაშვების მაგალითი
docker run -m 512m myimage # განსაზღვრავს მეხსიერების ზღვარს 512 მბ-ად