MongoDB auf dedizierter Hardware

veröffentlicht am : Fr, 15. 11. 2013 geändert am: Fr, 15. 11. 2013

Kategorie: Computer

Schlagworte:


Bei holidayinsider.com haben wir als primäre Datenbank MongoDB im Einsatz. Das war nicht immer ganz einfach, es gab da schon so einige Probleme (ich habe darüber berichtet). Insbesondere hatten wir seltsame  Performanceprobleme, so dass es manchmal 75 Sekunden(!) gedauert hat, einen Datensatz von ein paar Byte zu lesen.

Und das, obwohl auf der Mongo selbst nicht viel passiert zu dieser Zeit. Aber natürlich gab es Last auf anderen VMs. Dennoch war das super nervig: ein Job auf VM10 läuft und mongo hängt kurz... das war nicht akzeptabel.

Das hatte noch andere Auswirkungen: Wenn wir die Datenbank komprimiert haben (d.h. Verzeichnis löschen und neu synchornisieren lassen) hat das meistens ca. 24h für knapp 100GB gedauert. Und während der Synchronisierung waren die Antwortzeiten der Mongo wirklich desolat - teilweise durchgängig keine Antwort in weniger als 5 Sekunden.

Das war nicht mehr tragbar. Ich habe in Morphium deswegen längere Timeouts und retries eingebaut, die ganze API asynchron gemacht, damit unsere Webanwendung nicht down geht.

Nach unzähligen versuchen, VMWare zu optimieren, sind wir doch zu dem Entschluss gekommen, dedizierte Hardware zu verwenden. Ich hatte schon damit gerechnet, ca. 48h mit synchronisieren beschäftigt zu sein...

Weit gefehlt. Das Synchronisieren der Knoten ging innerhalb von ca. 3h, und zwar alle 3 gleichzeitig. Vorher konnte man gar nicht meh als einen Knoten gleichzeitig synchronisieren, da wir sonst quasi down waren.

Nach dem die Synchronisierung beendet war hatten wir allein dadurch, dass wir migriert haben, die Antwortzeiten der Mongo halbiert:

 

 

Und: jetzt nach den ersten 24h seit der Umstellung sind auch die seltsamen 75 Sekunden Peaks weg!

 

Tipp: MongoDB am besten nur auf dedizierter Hardware nutzen, nicht virutalisiert. Es sei denn, man hat Zeit....

erstellt Stephan Bösebeck (stephan)