Come ottenere l'attuale dimensione del set di lavoro di MongoDB


9

Dal documento , diceva

"Per prestazioni ottimali, la maggior parte del tuo set attivo dovrebbe adattarsi alla RAM."

Quindi, per esempio, mi db.stats()dia

{
"db" : "mydb",
"collections" : 16,
"objects" : 21452,
"avgObjSize" : 768.0516501957859,
"dataSize" : 16476244,
"storageSize" : 25385984,
"numExtents" : 43,
"indexes" : 70,
"indexSize" : 15450112,
"fileSize" : 469762048,
"ok" : 1
}

Quale valore è il working set size?


Risposte:


9

La domanda / risposta SO collegata da quanti nei commenti è corretta, il "Working set" è sostanzialmente la quantità di dati E indici che saranno attivi / in uso dal sistema.

Non si può dire da db.stats()cosa sarà se non si pensa che sarà necessario avere l'intero set di dati e l'intero indice nella RAM. Cioè, è possibile elaborare il set di lavoro massimo per quel database, ma non il set di lavoro attivo effettivo. Il massimo è la somma di:

  1. dataSize - La dimensione totale dei dati contenuti in questo database
  2. indexSize - La dimensione totale di tutti gli indici creati su questo database

Nel tuo caso, quel massimo sarebbe di circa 30,45 MiB dato l'output incollato.

Per tenere traccia dell'utilizzo effettivo della memoria, consiglierei una combinazione delle figure db.stats()e dei grafici della memoria (in particolare la memoria residente) disponibili nello strumento di monitoraggio gratuito - MMS .

Aggiornamento (04/08/2013):

La versione 2.4 ha aggiunto una stima delle dimensioni del set di lavoro al comando serverStatus : è solo una stima, ma può essere utilizzata come guida e per verificare se le altre figure e stime sopra hanno senso per l'istanza MongoDB.

Aggiornamento (settembre 2016):

A tre anni dalla mia risposta originale e le cose sono molto più complicate: generalmente ottenere la dimensione dei dati e degli indici è un buon punto di partenza. Ma capire le cose in MongoDB ora dipenderà dal motore di archiviazione che stai utilizzando. Inoltre, la versione 3.0 ha rimosso lo stimatore del working set collegato sopra per MMAP come parte del lavoro di blocco a livello di raccolta (vedere SERVER-13783 ). Esistono ora (ad esempio) le statistiche della cache per il WiredTigermotore in sostituzione supponendo che tu abbia fatto il salto al nuovo motore. Per MMAP, la raccomandazione generale è di guardare la metrica degli errori di pagina come proxy per stabilire se i tuoi dati si adattano o meno alla memoria.


In realtà sto MMSgià usando , ma non sono sicuro di quale figura guardare.
Howard,

Generalmente la figura residente sul grafico della memoria è la più rilevante qui. Crescerà nel tempo e occuperà tutta la RAM disponibile (con i dati più vecchi sottoposti a paging secondo necessità per il paging di nuovi dati) se il set di dati è significativamente più grande della RAM. In caso contrario e il set di dati è abbastanza statico, troverà un livello inferiore e passerà il mouse sopra. Il valore massimo che ho delineato sopra sarebbe la maggior quantità di RAM che un singolo database occuperebbe come parte di quella cifra.
Adamo C,

1
Il comando serverStatus non include più la stima della dimensione del set di lavoro, a partire da MongoDB 3.0. docs.mongodb.com/manual/reference/command/serverStatus
Vince Bowdren

1
Le cose sono cambiate molto in 3-4 anni. Ho lasciato l'originale e ho aggiunto un udpate per coprire alcune delle opzioni nelle versioni più recenti.
Adamo C,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.