Sobes.tech
Middle

Mi történik a konténerrel, ha túllépik a memóriahatárt?

sobes.tech MI

Válasz az MI-től

Amikor a Docker-konténerhez beállított memóriahatárt túllépik, a következő fő események történnek:

  1. OOM (Out of Memory) esemény: A működési rendszer kernelje észleli, hogy a konténeren belüli folyamat megpróbál memóriát foglalni, amely meghaladja a beállított határt.
  2. Killing jel: A kernel küldi a SIGKILL jelet a konténeren belüli folyamatnak. Ezt a jelet nem lehet elfogni vagy figyelmen kívül hagyni a konténerben futó alkalmazás által.
  3. A konténer leállítása: A konténeren belüli folyamat kényszerített módon befejeződik. A Docker démon észleli, hogy a fő folyamat befejeződött, és a konténer állapotát Exited-re változtatja.
  4. Kilépési kód: A konténer nem nullával tér vissza (általában 137), ami arra utal, hogy a jelet kényszerített módon zárták.

Hatások az alkalmazásra és a rendszerre:

  • A konténerben futó alkalmazás hirtelen leáll.
  • Ha újraindítási politika van beállítva (restart policy), a Docker megpróbálja újraindítani a konténert.
  • A konténer és/vagy a hoszt naplóiban rögzítésre kerül az OOM esemény és a konténer leállítása.

Memóriahatár beállításának példája:

# Docker Compose példa
services:
  myapp:
    image: myimage
    mem_limit: 512m # 512 MB memóriahatárt állít be
# Docker futtatási példa
docker run -m 512m myimage # 512 MB memóriahatárt állít be