2016-08-09 44 views
0

Ich habe eine Datenbank auf MongoDB eingerichtet und ich möchte die CPU-und RAM-Auslastung für verschiedene Abfragen berechnen.Messen CPU/RAM Verwendung während der Abfrage in MongoDB

Ich versuche, die Psutil-Bibliothek dazu zu verwenden. Hier ist ein solches Beispiel:

process = psutil.Process(44083) # Got the pid of mongod running by ps aux | grep mongod 

mem_usage = process.memory_info()[0] 
cpu_usage = process.cpu_percent() 
print mem_usage, cpu_usage 

cursor = db.production.find({'key':value}) 

mem_usage = process.memory_info()[0] 
cpu_usage = process.cpu_percent() 
print mem_usage, cpu_usage 

Ist dies der richtige Weg, um die gewünschten Messwerte zu bekommen?

+0

Ich glaube, Sie sollten versuchen, ein Mongo-Monitoring-Tool für diese Verwendung. Sie können Live-Statistiken anzeigen, während Abfragen ausgeführt werden. – umair

Antwort

0

Ich empfehle Ihnen, eines der kostenlosen Tools wie Datadog, ServerDensity, NewRelic zu verwenden. Sie haben freie Pläne und können auch Mongo-Statistiken sammeln.

Aber warum müssen Sie die CPU- und Speichernutzung messen, wenn Sie keine Kontrolle darüber haben?

Ich würde eher konzentrieren sich auf das Erstellen von richtigen Schema und Indizes und dann messen ihre Verwendung, CPU und RAM sind nur Indikatoren, die somethings going on. Mongo Statistiken auf der anderen Seite können Ihnen sagen, what geht weiter.

Hier sind einige nützliche Links von Mongo Dokumentation: https://docs.mongodb.com/manual/administration/monitoring/ https://docs.mongodb.com/manual/reference/command/serverStatus/

+0

Ich sehe mir die kostenlosen Tools an. Ich habe die CPU- und RAM-Nutzung von Mongo mit Oracle verglichen, deshalb. –

+0

Ich denke nicht, dass es vergleichbar ist. Mein Versuch, dies zu tun, wäre Benchmarking, Datengröße, Indexgröße und Abfrage Antwortzeit. Sehen Sie sich Vergleiche zwischen verschiedenen Datenbanken an. Sie vergleichen Indikatoren wie Inerts pro Sekunde und nicht die verwendete CPU. – spinache