• If you need help or want to discuss things, you now can also join us on our Discord Server!
  • A first preview of the unlimited version of SinusBot can be found in the Upcoming Changes thread. A version for Windows will follow, but we don't have a release date, yet.

Sinusbot-Docker: 'cannot allocate memory'

marcore21

Member
Hi, zuerst möchte ich mich bedanken, dass Sinusbot existiert und bisher einwandfrei funktioniert hat. In letzter Zeit hatte ich allerdings ein Problem, welches ich leider nicht nachvollziehen kann.
Kurz zu meinem Setup:
KVM VPS "1 Kern CPU" und 2 gb Ram (1gb swap) mit Debian Stretch 9.7
Docker-Image 'sinusbot/docker:latest'; Sinusbot-Version: '0.14.3-0e747fd'

Aktuell laufen darauf unter anderem mehrere TeamSpeak Server (in Docker Containern) sowie Web- und Mailserver.
Der aktuelle Ram-Verbrauch ohne Sinusbot liegt bei ca. 1 gb, es wären also noch mindestens 800 mb verfügbar.
Da ich mehrere Communities verwalte, würde ich gerne 2 getrennte Sinusbot Instanzen in Docker Containern laufen lassen. Hierzu verwende ich das offizielle 'sinusbot/docker' image in der aktuellsten Version (vom 04.01.2019).
Starte ich meinen Server neu und anschließend die beiden Sinusbot-Container mit insgesamt 3 laufenden Bots, funktioniert zuerst alles einwandfrei. Die Ram-Auslastung liegt bei ca. 1,3gb.
Nach zwei bis drei Tagen jedoch beginnt einer der beiden Sinusbot-Container die Bots zu stoppen. Versuche ich nun diese neuzustarten, kommt spätestens beim 2. Bot die Meldung

'Error spawning instancefork/exec /opt/sinusbot/TeamSpeak3-Client-linux_amd64/ts3client_linux_amd64: cannot allocate memory'

im Log, jedoch obwohl noch genügend Ram frei wäre (mindestens 0,5 gb).
Meine Erfahrung mit Docker ist momentan noch eher begrenzt, aber wäre es evtl. denkbar, dass Docker die Ram Auslastung aus irgend einem Grund begrenzt? Dabei würde 'docker stats' allerdings auch etwas anderes sagen.
Ein Upgrade auf einen größeren Server halte ich momentan noch nicht für notwendig, da ich ein ähnliches Setup bereits auf einem 1gb Server laufen hatte. Da lag die Ram Auslastung dann sogar bei >90% aber 'cannot allocate memory' Meldung hatte ich nie. Außerdem laufen alle anderen Anwendungen aktuell einwandfrei.

Ich hoffe jemand kann mir hierbei weiterhelfen, meine Google-Bemühungen haben bisher leider noch nicht zum Erfolg geführt.
 

OTD

Member
Moin,
um deine Frage zu beantworten, ja docker KANN den Ram begrenzen.
Dies kann auf 2 arten sein:

1. Entweder mit einem Parameter beim starten des Containers
oder
2. direkt vom Entwickler im Image

Selbiges Problem hatte ich vor längerer Zeit auch mal.

Hab aber grad nicht auf dem Schirm wie ich es gelöst hatte aber ich schau später mal in meinen Notizen nach ob ichs noch finde.

In der zwischenzeit kannwst ja mal die Docker Dokumentation durchstöbern.

Gruß
 
Top