Förstå MongoDB-minnesanvändningen är avgörande för en bra MongoDB-värdupplevelse. För bästa prestanda är det absolut nödvändigt att ha ditt arbetsset i minnet. Jag har sett några förslag om att om du använder solid-state-enheter (SSD) gör det minnet mindre viktigt. DRAM-åtkomsttiden (Dynamic Random Access Memory) är i storleksordningen nanosekunder, SSD-åtkomsttiden är i storleksordningen mikrosekunder och åtkomsttiden för hårddisken är i storleksordningen millisekunder – så SSD:er har fortfarande en väg att gå för att komma ikapp med minne.
MongoDB använder minnesmappade filer (MMF) för att mappa databasen till minnet. Data spolas regelbundet till disken (uppenbarligen är mekanismen mycket mer komplicerad, men det är ett ämne för ett annat inlägg).
När din MongoDB-server väl är igång är det viktigt att övervaka och förstå minnesanvändningen. För att övervaka våra MongoDB-servrar kan du använda ScaleGrid MongoDB Monitoring Console för att se detaljerad statistik om din prestation. Kör några exempel på arbetsbelastningar och upprätta en baslinje så att du kan förstå när något inte fungerar normalt. Här är fyra viktiga räknare som hjälper dig att övervaka din MongoDB-minnesanvändning:
-
Minne
Detta är faktiskt tre räknare i en graf:
-
Invånarminne
Detta är den faktiska mängden fysiskt minne som används av MongoDB-processen.
-
Kappat minne
Detta är mängden virtuellt minne som används av MongoDB-förloppet för att mappa din databas till minnet. Detta kommer vanligtvis att vara storleken på din databas.
-
Virtuellt minne
Detta inkluderar det virtuella minnet för hela MongoDB-processen. Om du har aktiverat journalföring är detta vanligtvis dubbelt så stort som ditt mappade minne.
-
-
Icke-mappat virtuellt minne
Detta är mängden virtuellt minne som används för bokföringsdata och inte för att kartlägga datafilerna. Till exempel förbrukar varje anslutning en viss mängd minne. Vanligtvis bör denna räknare vara ganska låg – vanligtvis mindre än 1 GB.
-
Sidfel
Detta är antalet hårda sidfel/sekund. Uppenbarligen vill du att detta nummer ska vara så lågt som möjligt.
-
Hård sidasfel
Detta utlöses när sidan i fråga inte finns i fysiskt minne och måste hämtas från disken.
-
Mjukt sidfel
Detta inträffar när sidan finns någon annanstans i minnet eller är i ett övergångstillstånd.
-
-
B-träd (Index Miss)
En indexmiss är dubbelt så ineffektiv, eftersom den gör att två diskläsningar, en läser indexposten och en annan läser dokumentet. B-trädräknaren spårar antalet indexmissar. Det här är en annan plats där du vill upprätta en baslinje för att upptäcka ovanliga mönster. Använd kommandot .explain() för att kontrollera frågeplanerna för dina vanliga frågor.
En annan viktig aspekt av minneshantering i MongoDB är att förstå din "Arbetsuppsättning". I vårt nästa inlägg kommer vi att undersöka hur man bestämmer arbetsuppsättningen för din databas.