Hilfestellung bei MongoDB

Asulu

New Member
Hallo,

suche Hilfestellung bei der Verwendung mit MongoDB.
Es handelt sich um ein Gameserver Netzwerk welches in einigen Punkten wohl optimiert werden kann. Findet sich hier jemand der sich gut mit MongoDB auskennt?

Alles weitere könnte man dann direkt persönlich klären,

Danke

Lg
 
Wenn du ein paar konkrete Fragen hast, könnte ich dir vielleicht Antworten geben. Ich fahre ein paar Mongo-Instanzen auch als ReplicaSet in der Cloud und könnte dir ggf. den einen oder anderen Tipp geben.
Allerdings mache ich keine Einzelkonsultationen.
 
Die Mongo läuft auf einem großen 12 Kerner und nutz aktuell nur 22 MB Ram, bei einer relativ hohen CPU Last. Sieht so aus als würde sie nichts cachen.

Diese wurde auch nur wenig konfiguriert, gibt es Punkte die unbedingt beachtet werden müssen?

Danke für deine Hilfe,

Grüße
 
Schaut euch die DB-Anfragen mal an und denkt darüber nach wie man z.B. for-Schleifen verhindern kann, in denen DB-Anfragen vorkommen. Ich glaube der Syntax für MongoDB ist JS. Es gibt aber auch schöne Wrapper und die DB ist so schön einfach im Vergleich zu SQL. Der Optimierungsbedarf liegt eher bei der Software, als bei MongoDB.
 
auf einem großen 12 Kerner
Wie viele Kerne kann dein Anwendungsfall ausnutzen? Läuft auf dem Server noch was anderes?

und nutz aktuell nur 22 MB Ram
Wie viele Daten sind in der DB? Das muss man in Relation sehen. Wenn ja jetzt nur ein paar MB Daten drin sind, dann ist die RAM-Nutzung nicht weiter ungewöhnlich.
Läuft auf dem Server noch was anderes?
"MongoDB automatically uses all free memory on the machine as its cache." [1]
MongoDB sollte sich den gesamten Speicher als Cache gönnen, gibt diesen allerdings frei, wenn andere Prozesse den Speicher benötigen.

bei einer relativ hohen CPU Last.
Ist die Last von DB-Prozessen oder eher I/O-Wait?

Sieht so aus als würde sie nichts cachen.
Wenn caching das Problem ist, dann solltest du viel I/O-Wait sehen.

MongoDB ist eigentlich sehr anspruchslos, was die Konfiguration angeht und macht das meiste intern per Default. Das sieht man sehr schön hieran:
"MongoDB has no configurable cache. MongoDB uses all free memory on the system automatically by way of memory-mapped files. Operating systems use the same approach with their file system caches." [1]

Die wichtigste Frage ist also: Was läuft sonst noch auf dem Server? Teilt sich die MongoDB die Kiste mit vielen anderen Prozessen, wäre eine Überlegung, die MongoDB auf separate Server auszulagern.

Gleich danach kommt die Frage nach konkurrierenden Zugriffen und dem Anteil an schreibenden Zugriffen. Wenn da viel Konkurrenz ist und ein hoher Write-Anteil, könnte es sich lohnen ein ReplicaSet einzurichten und die Clients Reads bevorzugt an Slave(s) zu schicken.

[1] http://docs.mongodb.org/manual/faq/fundamentals/
 
Wie viele Kerne kann dein Anwendungsfall ausnutzen? Läuft auf dem Server noch was anderes?

Normal auf alle 12, auf dem Server läuft aktuell nur die MongoDB.

Wie viele Daten sind in der DB? Das muss man in Relation sehen. Wenn ja jetzt nur ein paar MB Daten drin sind, dann ist die RAM-Nutzung nicht weiter ungewöhnlich.
Läuft auf dem Server noch was anderes?
"MongoDB automatically uses all free memory on the machine as its cache." [1]
MongoDB sollte sich den gesamten Speicher als Cache gönnen, gibt diesen allerdings frei, wenn andere Prozesse den Speicher benötigen.

46424064 Bytes / 1024 = 45336 KB; 45336 KB / 1024 = 44,27.. MB
Ist die aktuelle DB groß.


bei einer relativ hohen CPU Last.

Werde ich beobachten, denke aber das dort nicht der Fehler liegt.
 
Schau doch mal mit iotop nach, was der MongoDB-Server an IO generiert.
 
Mittlerweile haben wir es in den Griff bekommen, lag vor allem an der Software die nun weiter optimiert wird. Danke für die Hilfe,

Grüße
 
Back
Top