Voor een project moest ik onlangs een stukje code schrijven dat via SOAP een behoorlijk grote dataset moest ophalen, verwerken en in een database moest opslaan. Om zowel op kantoor als thuis gemakkelijk te kunnen ontwikkelen had ik besloten om een ontwikkelomgeving op te zetten in Docker.

In eerste instantie testte ik mijn code met kleinere datasets. Alles leek prima te werken, totdat de code klaar was om te testen met de grote datasets. Op de één of andere manier werd mijn code, die command line draaide, afgebroken met de melding Killed.

Na wat Googlen leek het erop dat ik meer geheugen gebruikte dan er beschikbaar was. Veel zoekresultaten gaven aan dat het een veel voorkomend probleem was dat er geen soapruimte meer was op de schijf. Hierop besloot ik in de code op verschillende punten wat geheugen vrij te maken. In eerste instantie leek dit de oplossing, want ik kreeg de melding niet meer en de code liep prima door. Echter, na verder uitbreiding kreeg ik toch weer de killed melding.

Nu ontwikkel ik op een laptop met een 256GB schijf en 16GB RAM, dus het leek me toch onwaarschijnlijk dat ik onvoldoende resources zou hebben. Dit bracht me op het idee om toch eens in de Docker settings te gaan neuzen.

Toen bleek dat Docker inderdaad instellingen heeft voor de te gebruiken resources. Het probleem bleek eenvoudig op te lossen door de swapruimte te verhogen. De standaardwaarde voor de swapruimte is 1GB. Nadat ik deze verhoogd heb naar 3,5GB heeft het probleem zich niet meer voorgedaan.

Reacties