MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Verfolgen der MongoDB-Speichernutzung

Das Verständnis der MongoDB-Speichernutzung ist entscheidend für ein gutes MongoDB-Hosting-Erlebnis. Um die beste Leistung zu erzielen, ist es unerlässlich, Ihr Arbeitsset im Arbeitsspeicher zu halten. Ich habe einige Vorschläge gesehen, dass der Speicher weniger wichtig wird, wenn Sie Solid-State-Laufwerke (SSD) verwenden. Die Zugriffszeit für dynamische Direktzugriffsspeicher (DRAM) liegt in der Größenordnung von Nanosekunden, die SSD-Zugriffszeit in der Größenordnung von Mikrosekunden und die Festplattenzugriffszeit in der Größenordnung von Millisekunden – SSDs haben also noch einen weiten Aufholbedarf mit Gedächtnis.

MongoDB verwendet Memory Mapped Files (MMF), um die Datenbank dem Speicher zuzuordnen. Daten werden regelmäßig auf die Festplatte gespült (offensichtlich ist der Mechanismus viel komplizierter, aber das ist ein Thema für einen anderen Beitrag).

Sobald Ihr MongoDB-Server betriebsbereit ist, ist es wichtig, die Speichernutzung zu überwachen und zu verstehen. Um unsere MongoDB-Server zu überwachen, können Sie die ScaleGrid MongoDB Monitoring Console verwenden, um detaillierte Messwerte zu Ihrer Leistung anzuzeigen. Führen Sie einige Beispiel-Workloads aus und legen Sie eine Baseline fest, damit Sie nachvollziehen können, wenn etwas nicht normal funktioniert. Hier sind vier wichtige Indikatoren, die Ihnen helfen, Ihre MongoDB-Speichernutzung zu überwachen:

  1. Erinnerung

    Das sind eigentlich drei Zähler in einem Diagramm:

    1. Residenter Speicher

      Dies ist die tatsächliche Größe des physischen Speichers, der vom MongoDB-Prozess verwendet wird.

    2. Zugeordneter Speicher

      Dies ist die Menge an virtuellem Speicher, die vom MongoDB-Fortschritt verwendet wird, um Ihre Datenbank dem Speicher zuzuordnen. Dies entspricht normalerweise der Größe Ihrer Datenbank.

    3. Virtueller Speicher

      Dies beinhaltet den virtuellen Speicher für den gesamten MongoDB-Prozess. Wenn Sie Journaling aktiviert haben, ist dies normalerweise doppelt so groß wie Ihr zugeordneter Speicher.

  2. Nicht zugeordneter virtueller Speicher

    Dies ist die Menge an virtuellem Speicher, die für Buchhaltungsdaten und nicht für die Zuordnung der Datendateien verwendet wird. Beispielsweise verbraucht jede Verbindung eine bestimmte Menge an Speicher. Normalerweise sollte dieser Zähler ziemlich niedrig sein – normalerweise weniger als 1 GB.

  3. Seitenfehler

    Dies ist die Anzahl der harten Seitenfehler/Sekunde. Natürlich möchten Sie, dass diese Zahl so niedrig wie möglich ist.

    • Harter Seitenfehler

      Dies wird ausgelöst, wenn sich die betreffende Seite nicht im physischen Speicher befindet und von der Festplatte abgerufen werden muss.

    • Soft Page Fault

      Dies tritt auf, wenn sich die Seite an einem anderen Speicherort befindet oder sich in einem Übergangszustand befindet.

  4. B-Baum (Index Miss)

    Ein Indexfehler ist doppelt so ineffizient, da er zwei Lesevorgänge auf der Festplatte verursacht, einen zum Lesen des Indexeintrags und einen zum Lesen des Dokuments. Der B-Tree-Zähler verfolgt die Anzahl der Index-Fehlversuche. Dies ist ein weiterer Ort, an dem Sie eine Basislinie festlegen sollten, um ungewöhnliche Muster zu erkennen. Verwenden Sie den Befehl .explain(), um die Abfragepläne für Ihre gängigen Abfragen zu überprüfen.

Ein weiterer wichtiger Aspekt der Speicherverwaltung in MongoDB ist das Verständnis Ihres „Arbeitssatzes“. In unserem nächsten Beitrag untersuchen wir, wie Sie das Arbeitsset für Ihre Datenbank bestimmen.