Vraag


Acties:
  • 0 Henk 'm!

  • kamerplant
  • Registratie: Juli 2001
  • Niet online
Ik gebruik Docker voor diverse containers op een cloud instance van Vultr. De containers worden gestart met docker-compose. Dit gaat uitstekend en stabiel, totdat ik een memory intensieve taak uitvoer. De host gebruikt Ubuntu 18.04. De server heeft 1GB fysieke memory, 6GB swap.

Standaard heeft de Docker engine de memory limit identiek als het fysieke geheugen op de server (=1GB). Dit is in te stellen met "memory" en "memory-swap" options, op te geven bij het starten van een container. Zie:
https://docs.docker.com/c...ers/resource_constraints/

Ik wil dit alleen niet per container aangeven, maar gewoon voor de hele Docker engine zelf. Ik kan dit nergens vinden. Iemand een idee of en hoe dit kan? :P Of een andere tip hieromtrent?

🌞🍃

Alle reacties


Acties:
  • +2 Henk 'm!

  • Hero of Time
  • Registratie: Oktober 2004
  • Laatst online: 22:28

Hero of Time

Moderator LNX

There is only one Legend

Je hebt een machine met maar 1 GB geheugen en je draait daar docker op? Dat is je probleem. Leuk dat je dan maar 6 GB 'virtueel' geheugen erbij prikt middels swap, maar dat werkt natuurlijk voor geen meter.

Het is vast lekker goedkoop, maar voor wat je wilt doen is het compleet ongeschikt. Elk systeem zal met zo weinig RAM problemen geven als je een geheugenintensieve taak gaat draaien.

Commandline FTW | Tweakt met mate


Acties:
  • +1 Henk 'm!

  • kamerplant
  • Registratie: Juli 2001
  • Niet online
@Hero of Time , dat zal je verbazen. Ik ben laag begonnen en ga natuurlijk upgraden als het nodig is. Ik heb diverse containers uitstekend draaien, met hoge stabiliteit en goede performance met slechts 1GB memory. Docker met Linux containers zijn kennelijk echt heel erg efficiënt. Uiteraard is de belangrijkste factor dat wat in de containers gebeurd, hoeveel resources de apps nodig hebben.
Waarom dan toch m’n vraag? Mocht het geheugen op een zeker moment toch niet genoeg zou zijn, heb ik liever dat er wordt geswapt dan een crash.

🌞🍃


Acties:
  • +1 Henk 'm!

  • Andre_J
  • Registratie: September 2005
  • Laatst online: 22:35
Ik zelf heb op m’n Linux bakkie met Arch ook maar 400MB in gebruik met Docker.
4 cointainers op dit moment.
Hass, Portainer, Adguard en een logger voor m’n PV installatie.
Vreet dus bijna niks. Wat ie gaat doen met swappen weet ik niet, er zit genoeg ram in.

[ Voor 0% gewijzigd door Andre_J op 04-07-2020 23:11 . Reden: Typo ]


Acties:
  • +1 Henk 'm!

  • Hero of Time
  • Registratie: Oktober 2004
  • Laatst online: 22:28

Hero of Time

Moderator LNX

There is only one Legend

Als je 6 GB aan swap moet toevoegen om te kunnen 'werken' heb je gewoon te weinig RAM. Wordt er constant naar swap geschreven, dan heb je te weinig RAM. Is je swap noodzakelijk een veelvoud van je RAM, dan heb je te weinig.

Kijk eens naar wat het systeem doet en hoeveel het aan het swappen is. Wat is de load? Het geheel is gewoon suboptimaal en je vraagt hiermee gewoon om problemen.

Commandline FTW | Tweakt met mate


Acties:
  • +1 Henk 'm!

  • Douweegbertje
  • Registratie: Mei 2008
  • Laatst online: 09-06 12:37

Douweegbertje

Wat kinderachtig.. godverdomme

kamerplant schreef op zaterdag 4 juli 2020 @ 18:52:
@Hero of Time , dat zal je verbazen. Ik ben laag begonnen en ga natuurlijk upgraden als het nodig is. Ik heb diverse containers uitstekend draaien, met hoge stabiliteit en goede performance met slechts 1GB memory. Docker met Linux containers zijn kennelijk echt heel erg efficiënt. Uiteraard is de belangrijkste factor dat wat in de containers gebeurd, hoeveel resources de apps nodig hebben.
Waarom dan toch m’n vraag? Mocht het geheugen op een zeker moment toch niet genoeg zou zijn, heb ik liever dat er wordt geswapt dan een crash.
Ik ga even niet heel subtiel zijn. Dit voelt echt als oude wereld implemteert nieuwe wereld.

Dat je performance slecht is, is omdat je swapped. Swap is geen toevoeging voor memory. Het is een pleister. Of beter gezegd ducktape voor de processen die uit elkaar vallen door gebrek aan jawel, management.

Containers zijn processen. Het nut is juist om dat goed te benutten. Door waardes toe te kennen aan zowel CPU en memory gebruik. Waarom? Omdat je anders niet in control bent. Je kan niet een totaal systeem stabiel opzetten zonder de garantie te hebben dat je processen niet compleet banana`s gaan. En daarin is nu je denkwijze dus nog van de "oude wereld". Want je zit nog te veel na te denken over swap, verbruik, alsof het een OS is.

Waar je echter wel tegenaan loopt is het gebrek van een goede manager. Want dat is de "Docker engine" zelf niet perse. Het is geen echte orchestrator. Ik pak Kubernetes er even bij om je context te geven:

Alle nodes hebben geen swap. Want swap is slecht, maar belangrijker nog: we hoeven niet te swappen! We denken na en limiteren het gebruik. Gaat een process veel gebruiken dan raakt hij of de limits die ik heb ingesteld, of de Max van een server/cluster. Dan is het de vraag wat dat proces doet. Kan hij met die limit verder werken of raakt het OOM? In zo'n geval word de pod gekilled en start hij opnieuw op. Dat is wat ik wil. Blijft hij crashen dan moet ik dat oplossen in de resources of in de applicatie. Maar voor de love of God: ik ga niet 6x m'n geheugen als swap opzetten.

Juist heel het principe van containers en de lifecycle daarvan is om die dingen af te schieten als ze niet goed functioneren. Niet om ze krampachtig vast te houden en net doen alsof het wel werkt.

Vaak heb je dan een cluster met meerdere nodes en zelfs autoscaling van die nodes. Dus als je dan met meerdere containers richting limits gaat (omdat je bijvoorbeeld niets hebt gereserveerd) dan word je container gekilled en opnieuw scheduled. Dan wordt gekeken waar plek is en eventueel gemoved.

Maar zo gaan we het meer hebben over "Docker in productie". Echter staat dat eigenlijk los van dit stuk. Het principe is dat containers niet moeten swappen maar vast mogen blijven leven in een bepaalde scope. Zo draai ik meerdere services die prima blijven leven met de limieten die ik in stel. Doen ze dat niet, dan zal ik de constate restarts moeten accepteren totdat ik meer resources toe voeg.
Pagina: 1