Sobes.tech
Middle

Mis juhtub konteineriga, kui mälu limiit on ületatud?

sobes.tech AI

Vastus AI-lt

Kui Docker konteineri määratud mälu limiit ületatakse, toimuvad järgmised peamised sündmused:

  1. OOM (Out of Memory) sündmus: Operatsioonisüsteemi kernel tuvastab, et protsess konteineris üritab eraldada mälu, mis ületab määratud limiidi.
  2. Signaal Killed: Kernel saadab protsessile konteineris signaali SIGKILL. Seda signaali ei saa konteineris töötav rakendus kinni püüda ega ignoreerida.
  3. Konteineri lõpetamine: Konteineris olev protsess lõpetatakse sunniviisiliselt. Docker demon tuvastab, et konteineri peamine protsess on lõppenud, ja muudab konteineri staatuse Exited-ks.
  4. Väljundkood: Konteiner lõpetab töö mittetühja väljundkoodiga (tavaliselt 137), mis näitab, et see lõpetati sunniviisiliselt signaali abil.

Tõenäolised tagajärjed rakendusele ja süsteemile:

  • Konteineris töötav rakendus lõpetab ootamatult.
  • Kui on seadistatud taaskäivituspoliitika (restart policy), proovib Docker konteinerit uuesti käivitada.
  • Logidesse konteineris ja/või hostis registreeritakse OOM-i sündmus ja konteineri lõpetamine.

Näide mälu limiidi seadistamisest:

# Docker Compose näide
services:
  myapp:
    image: myimage
    mem_limit: 512m # Seadistab mälu limiidiks 512 MB
# Docker käivitamise näide
docker run -m 512m myimage # Seadistab mälu limiidiks 512 MB