L’ultimo webinar della serie discuterà quali metriche sono importanti e come gestire e monitorare la vostra applicazione per migliorare le performance.
Massimo Brignoli:
Massimo ha 44 anni e vive a Milano. Ha lavorato nell’IT per 23 anni per aziende di trasporti, società web e database company. Nel 1998 è entrato una una piccola startup come sviluppatore aiutandola a diventare il più importante portale web italiano, venduto 3 anni più tardi per 700 milioni di dollari. E’ entrato a lavorare in MySQL come pre-vendita viaggiando in tutto il mondo e aiutando le società telecom ad adottare MySQL Cluster. Nel 2012 è entrato in SkySQL come product manager, seguendo l’integrazione con MariaDB e successivamente ha deciso di entrare in MongoDB per seguire nuove sfide professionali. Attualmente e’ Senior Solutions Architect.
MongoDB .local Paris 2020: Upply @MongoDB : Upply : Quand le Machine Learning...
Webinar Italiano: Back-to-Basics: Sessione 8 - Monitoraggio e Performance Tuning
1. Serie Sviluppo di
Un’Applicazione
Back to Basics
Monitoring & Performance Tuning
Senior Solutions Architect, MongoDB Inc.
massimo@mongodb.com
Massimo Brignoli
#mongodb
2. Agenda
• Riassunto
• Tools di Monitoring
– MongoDB command line e la shell
• Metriche chiave in MongoDB
• Logs
– Livelli di Log
– mtools
• Saturazione del Disco
3. Q & A
• Virtual Genius Bar
– Use the chat to post
questions
– EMEASolution
Architecture / Support
team are on hand
– Make use of them
during the sessions!!!
5. Tools di Backup e Approcci
• mongodump & mongorestore
• Copia del File system
• Snapshot del File system
• Non Usate mongoimport & mongoexport!
//Esempio di mongodump
server> mongodump -h myhost -d cms -c articoli
6. Mongodump
• Crea un file .bson
– (e un json di metadati)
– Sulla rete o direttamente sul file system
>mongodump –h myhost -d cms -c articles
connected to: myhost
2014-04-16T12:54:56.758+0100 DATABASE: cms to dump/cms
2014-04-16T12:54:56.759+0100 cms.articles to
dump/cms/articles.bson
2014-04-16T12:54:56.816+0100 7 documents
2014-04-16T12:54:56.817+0100 Metadata for cms.articles to
dump/cms/articles.metadata.json
7. Architetture di Backup
• Usate il secondary per il backup
– O un hidden secondary
• Fsync+Lock
• Il bilanciatore e’ off
– In sharded cluster
mongodump
15. Mongo shell
• Comandi per accedere alle metriche
– db.serverStatus()
– workingSet analyzer
//to access a subset of serverStatus output specify the sub document
>db.serverStatus().mem
{
"bits" : 64,
"resident" : 266,
"virtual" : 5920,
"supported" : true,
"mapped" : 1712,
"mappedWithJournal" : 3424
}
16. WorkingSet analyzer
• Utile per stimare il ‘working set’ di un database
– Numero di ‘pagesInMemory’accessed in RAM su il
‘overSeconds’ numero di secondi.
– Page di Default è 4k
– overSecond – delta tra il più vecchio e il nuovo
>db.serverStatus({ workingSet : 1 })
{
"note" : "thisIsAnEstimate",
"pagesInMemory" : 723,
"computationTimeMicros" : 4601,
"overSeconds" : 2311
}
overSeconds
decreasing or small,
workingSet could be
larger than RAM
19. Queued Reader | Writers
• Numero di
operazioni in attesa
per:
• Read Lock
• Write Lock
20. Page Faults
• Frequenza con cui
state andando su
disco a leggere I
dati?
• Può essere un problema se
l’IO del disco è saturo
• Da usare assieme a iostat
21. Background Flush Process
• Quantità di tempo
per effettuare il
flush dei dati du
disco
• Anche questo può
indicare la
saturazione del disco
27. • Aumentate il livello di log
– Per vedere maggior informazioni sulle performance delle operazioni
– Efficienza degli indici
– Spostamenti di documenti
– Tempo di esecuzione delle operazioni
Definite il livello di log
//Increase log level verbosity from the shell
> db.adminCommand( { setParameter:1, logLevel:1 } )
{ "was" : 0, "ok" : 1 }
>
-v [ --verbose ] be more verbose (include multiple times for more
verbosity e.g. -vvvvv)
28. • Problemi di Pinpoint
– In questoesempiopossiamovedere che c’èstatounospostamentodeldocumento
Esempio di output del Log
2014-05-02T13:55:02.047+0100 [conn7] update cms.articles query: {
_id: ObjectId('532198379fb5ba99a6bd4063') } update: { $inc: {
comment_count: 1 }, $push: { comments: { $each: [ { date: new
Date(1399035302013), text: "Data locality provides an amazing
performance boost over relational" } ], $slice: -10, $sort: { date: 1 } } } }
nscanned:1 nscannedObjects:1 nmoved:1 nMatched:1 nModified:1
keyUpdates:0 numYields:0 locks(micros) w:33529 33ms
29. • Analisi dei Log (esempio di sintassi)
– Mostrami le query che hanno impiegato più di 1000 ms
dalle 6 di mattina alle 6 di sera:
• Ora, fai un grafico:
Mtools
prompt> mlogfilter mongodb.log --from 06:00 --to 18:00 --
slow 1000 > mongodb-filtered.log
prompt> mplotqueries --logscale mongodb-filtered.log
32. • iostat
– Utilizzo dell’IO dei dischi
– Controllate la % di utilizzo del disco
– Un’alta percentuale
• Se è sostenuta, dovresti aumentare l’IO del disco
– Sharding
– RAID 1+0
– Partizionare su dischi differenti
– Provisioned IOPS
Tool del Sistema Operativo
prompt> iostat –xmt 1
34. Riassunto
• Controllate regolarmente
– Settate degli allarmi a fronte di cambiamenti
• Controllate velocemente con la shell e a linea di
comando
• Controllate i trend con I grafici di MMS
• In caso di alto livello di utilizzo
– Aumentate la RAM, l’IO del disco
– Scalate orizzontalmente
– (Controllate gli indici!!)
Editor's Notes
mongodump -d cms -c articles
connected to: myhost
2014-04-16T12:54:56.758+0100 DATABASE: cms to dump/cms
2014-04-16T12:54:56.759+0100 cms.articles to dump/cms/articles.bson
2014-04-16T12:54:56.816+0100 7 documents
2014-04-16T12:54:56.817+0100 Metadata for cms.articles to dump/cms/articles.metadata.json
mongodump -d cms -c articles
connected to: myhost
2014-04-16T12:54:56.758+0100 DATABASE: cms to dump/cms
2014-04-16T12:54:56.759+0100 cms.articles to dump/cms/articles.bson
2014-04-16T12:54:56.816+0100 7 documents
2014-04-16T12:54:56.817+0100 Metadata for cms.articles to dump/cms/articles.metadata.json