Sobes.tech
Middle

Wat gebeurt er met de container als de geheugenlimiet wordt overschreden?

sobes.tech AI

Antwoord van AI

Wanneer de voor een Docker-container ingestelde geheugenlimiet wordt overschreden, gebeuren de volgende hoofdgebeurtenissen:

  1. OOM (Out of Memory) Gebeurtenis: De kernel van het besturingssysteem detecteert dat een proces binnen de container probeert geheugen toe te wijzen dat de ingestelde limiet overschrijdt.
  2. Signaal Killed: De kernel stuurt een SIGKILL-signaal naar het proces binnen de container. Dit signaal kan niet worden opgevangen of genegeerd door de applicatie die in de container draait.
  3. Beëindiging van de container: Het proces binnen de container wordt geforceerd beëindigd. De Docker-daemon detecteert dat het hoofdproces van de container is beëindigd en wijzigt de status van de container naar Exited.
  4. Uitgangscode: De container eindigt met een niet-nul uitgangscode (meestal 137), wat aangeeft dat hij geforceerd is beëindigd door het signaal.

Gevolgen voor de applicatie en het systeem:

  • De applicatie die in de container draait, wordt abrupt beëindigd.
  • Als er een herstartbeleid (restart policy) is ingesteld, probeert Docker de container opnieuw te starten.
  • In de logs van de container en/of host wordt het OOM-evenement en de beëindiging van de container geregistreerd.

Voorbeeld van het instellen van een geheugenlimiet:

# Docker Compose voorbeeld
services:
  myapp:
    image: myimage
    mem_limit: 512m # Stelt een geheugenlimiet van 512 MB in
# Docker run voorbeeld
docker run -m 512m myimage # Stelt een geheugenlimiet van 512 MB in