• Like

Webinar Italiano: Back-to-Basics: Sessione 8 - Monitoraggio e Performance Tuning

  • 187 views
Uploaded on

L’ultimo webinar della serie discuterà quali metriche sono importanti e come gestire e monitorare la vostra applicazione per migliorare le performance. …

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.

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
187
On Slideshare
0
From Embeds
0
Number of Embeds
4

Actions

Shares
Downloads
8
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide
  • 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

Transcript

  • 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!!!
  • 4. Riassunto dell’Ultima Puntata
  • 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
  • 8. Monitoring Tools
  • 9. Tools • I Tool chiave di MongoDB – Mongostat – Mongo shell – Mongo Management Service mms • Mtools – Logs • OS – iostat
  • 10. Architettura di MMS
  • 11. Gli Alert di MMS
  • 12. Collezione di Metriche e Reportistica
  • 13. Dati di Profile e Log
  • 14. Mongostat • Accesso alle statistiche chiave – CollegareaunmongodounmongosfotIclusterinshardind – Viualizzaoperazioneal secondo/memoriausate,page faults,codeecc. >mongostat -h localhost --port 27017 connected to: localhost:27017 insert query update delete getmore command flushes mapped vsize res faults locked db idx miss % qr|qw ar|aw netIn netOut conn time *0 *0 *0 *0 0 1|0 0 1.67g 5.78g 29m 0 .:0.0% 0 0|0 0|0 62b 5k 2 09:08:24 *0 *0 *0 *0 0 1|0 0 1.67g 5.78g 29m 0 .:0.0% 0 0|0 0|0 62b 5k 2 09:08:25 *0 *0 *0 *0 0 1|0 0 1.67g 5.78g 29m 0 .:0.0% 0 0|0 0|0 62b 5k 2 09:08:26 *0 *0 *0 *0 0 1|0 0 1.67g 5.78g 29m 0 .:0.0% 0 0|0 0|0 62b 5k 2 09:08:27 *0 *0 *0 *0 0 1|0 0 1.67g 5.78g 29m 0 .:0.0% 0 0|0 0|0 62b 5k 2 09:08:28 *0 *0 *0 *0 0 1|0 0 1.67g 5.78g 29m 0 .:0.0% 0 0|0 0|0 62b 5k 2 09:08:29 *0 *0 *0 *0 0 1|0 0 1.67g 5.78g 29m 0 .:0.0% 0 0|0 0|0 62b 5k 2 09:08:30 *0 *0 *0 *0 0 1|0 0 1.67g 5.78g 29m 0 .:0.0% 0 0|0 0|0 62b 5k 2 09:08:31 *0 *0 *0 *0 0 1|0 0 1.67g 5.78g 29m 0 .:0.1% 0 0|0 0|0 62b 5k 2 09:08:32 *0 *0 *0 *0 0 1|0 0 1.67g 5.78g 29m 0 .:0.0% 0 0|0 0|0 62b 5k 2 09:08:33
  • 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
  • 17. Le Metriche di MongoDB
  • 18. • Queued readers | writers • Page faults • OpCounters • Background flush process • Memory usage • Lock % • Btree misses • connections Metriche Chiave Available from : • MMS • db.serverStatus() • mongostat
  • 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
  • 22. Memoria • Virtual • Mapped • Resident
  • 23. Lock % • Percentuale di tempo del lock globale
  • 24. Indici Btree • Accessi • Hits: valori trovati in memoria • Misses • Male! • Indica indici non in memoria
  • 25. Connessioni • Connessioni al database • Crescono nel tempo? • Controllate la logica di pool nella vostra applicazione
  • 26. Logs
  • 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
  • 30. Mtools output
  • 31. Saturazione del Disco
  • 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
  • 33. Riassunto
  • 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!!)