Sobes.tech
Middle

თუ მეხსიერების ზღვარი გადაჭარბდება, რა მოხდება კონტეინერთან?

sobes.tech AI

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

Docker კონტეინერისთვის განსაზღვრული მეხსიერების ზღვრის გადაჭარბებისას, ხდება შემდეგი ძირითადი მოვლენები:

  1. OOM (Out of Memory) მოვლენა: ოპერაციული სისტემის ბირთვი ამჩნევს, რომ კონტეინერის შიგნით პროცესმა სცადა მეხსიერების გამოყოფა, რომელიც აღემატება განსაზღვრულ ზღვარს.
  2. სიგნალი Killed: ბირთვი აგზავნის კონტეინერის შიგნით პროცესს SIGKILL სიგნალს. ეს სიგნალი ვერ იჭერება ან იგნორირებულია კონტეინერში მუშაობის დროს.
  3. კონტეინერის დასრულება: კონტეინერის შიგნით პროცესი ძალით დასრულდება. Docker დომენი ამჩნევს, რომ მთავარი პროცესი დასრულდა და კონტეინერის სტატუსს Exited-ად აქცევს.
  4. გამოსვლის კოდი: კონტეინერი დასრულდება ნულს არ უდრის კოდით (საშუალოდ 137), რაც მიუთითებს, რომ იგი ძალით დასრულდა სიგნალით.

მოქმედებები პროგრამასა და სისტემაზე:

  • კონტეინერში მუშაობა შეწყდება მოულოდნელად.
  • თუ განთავსებულია გადატვირთვის პოლიტიკა (restart policy), Docker-ი შეეცდება კონტეინერის გადატვირთვას.
  • კონტეინერის და/ან ჰოსტის ლოგებში რეგისტრირდება OOM მოვლენა და კონტეინერის დასრულება.

მეხსიერების ზღვრის დაყენების მაგალითი:

# Docker Compose-ის მაგალითი
services:
  myapp:
    image: myimage
    mem_limit: 512m # განსაზღვრავს მეხსიერების ზღვარს 512 მბ-ად
# Docker-ის გაშვების მაგალითი
docker run -m 512m myimage # განსაზღვრავს მეხსიერების ზღვარს 512 მბ-ად