Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
MongoDB Diagnostics and Performance Tuning
Search
dcrosta
January 23, 2012
Technology
3
1.7k
MongoDB Diagnostics and Performance Tuning
From MongoDB LA, January 19, 2012.
dcrosta
January 23, 2012
Tweet
Share
More Decks by dcrosta
See All by dcrosta
Let the computer write the tests
dcrosta
0
48
Good Test, Bad Test
dcrosta
1
700
Exploring Python Code Objects (PyOhio)
dcrosta
4
310
Python Packaging for Humans
dcrosta
13
490
Exploring Python Code Objects
dcrosta
5
250
Keystone: Python Web Development, Simplified
dcrosta
4
300
MongoDB In the Cloud with Amazon EC2
dcrosta
6
430
Evolution without Migration
dcrosta
2
420
Other Decks in Technology
See All in Technology
ウォンテッドリーのデータパイプラインを支える ETL のための analytics, rds-exporter / analytics, rds-exporter for ETL to support Wantedly's data pipeline
unblee
0
140
JAWS FESTA 2024「バスロケ」GPS×サーバーレスの開発と運用の舞台裏/jawsfesta2024-bus-gps-serverless
ma2shita
3
290
わたしがEMとして入社した「最初の100日」の過ごし方 / EMConfJp2025
daiksy
14
5.4k
クラウド関連のインシデントケースを収集して見えてきたもの
lhazy
9
1.9k
あなたが人生で成功するための5つの普遍的法則 #jawsug #jawsdays2025 / 20250301 HEROZ
yoshidashingo
2
320
いまからでも遅くない!コンテナでWebアプリを動かしてみよう!コンテナハンズオン編
nomu
0
170
[OpsJAWS Meetup33 AIOps] Amazon Bedrockガードレールで守る安全なAI運用
akiratameto
1
130
30→150人のエンジニア組織拡大に伴うアジャイル文化を醸成する役割と取り組みの変化
nagata03
0
290
Amazon Aurora のバージョンアップ手法について
smt7174
2
180
AIエージェント元年@日本生成AIユーザ会
shukob
1
250
入門 PEAK Threat Hunting @SECCON
odorusatoshi
0
180
日経のデータベース事業とElasticsearch
hinatades
PRO
0
260
Featured
See All Featured
A Modern Web Designer's Workflow
chriscoyier
693
190k
BBQ
matthewcrist
87
9.5k
KATA
mclloyd
29
14k
Stop Working from a Prison Cell
hatefulcrawdad
268
20k
Building Adaptive Systems
keathley
40
2.4k
4 Signs Your Business is Dying
shpigford
183
22k
VelocityConf: Rendering Performance Case Studies
addyosmani
328
24k
Building Flexible Design Systems
yeseniaperezcruz
328
38k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
120k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
28
9.3k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
33
2.8k
Facilitating Awesome Meetings
lara
53
6.3k
Transcript
Diagnostics and Performance Tuning Dan Crosta, 10gen dcrosta@10gen.com @lazlofruvous
Agenda •Tools •Performance Indicators
Speed MongoDB is a high-performance database, but how do I
know that I’m getting the best performance
TOOLS
1. mongostat
2.serverStatus > db.serverStatus(); { ! ! "host" : “MacBook.local", "version"
: "2.0.1", "process" : "mongod", "uptime" : 619052, // Lots more stats... }
3.Profiler > db.setProfilingLevel(2); { "was" : 0, "slowms" : 100,
"ok" : 1 }
3.Profiler > db.system.profile.find() { "ts" : ISODate("2011-09-30T02:07:11.370Z"), "op" : "query",
"ns" : "docs.spreadsheets", "query" : { "username": "dcrosta" }, "nscanned" : 20001, "nreturned" : 1, "responseLength" : 241, "millis" : 1407, "client" : "127.0.0.1", "user" : "" }
4.Monitoring Service • MMS: 10gen.com/try-mms • Nagios • Munin
INDICATORS
1.Slow Operations Sun May 22 19:01:47 [conn10] query docs.spreadsheets ntoreturn:100
reslen:510436 nscanned:19976 { username: “dcrosta”} nreturned:100 147ms
2.Replication Lag PRIMARY> rs.status() { "set" : "replSet", "date" :
ISODate("2011-09-30T02:28:21Z"), "myState" : 1, "members" : [ { "_id" : 0, "name" : "MacBook.local:30001", "health" : 1, "state" : 1, "stateStr" : "PRIMARY", "optime" : { "t" : 1317349400000, "i" : 1 }, "optimeDate" : ISODate("2011-09-30T02:23:20Z"), "self" : true }, { "_id" : 1, "name" : "MacBook.local:30002", "health" : 1, "state" : 2, "stateStr" : "SECONDARY", "uptime" : 302, "optime" : { "t" : 1317349400000, "i" : 1 }, "optimeDate" : ISODate("2011-09-28T10:17:47Z"), "lastHeartbeat" : ISODate("2011-09-30T02:28:19Z"),
3.Resident Memory > db.serverStatus().mem { "bits" : 64, // Need
64, not 32 "resident" : 7151, // Physical memory "virtual" : 14248, // Files + heap "mapped" : 6942 // Data files
3.Resident Memory > db.stats() { "db" : "docs", "collections" :
3, "objects" : 805543, "avgObjSize" : 5107.312096312674, "dataSize" : 4114159508, // ~4GB "storageSize" : 4282908160, // ~4GB "numExtents" : 33, "indexes" : 3, "indexSize" : 126984192, // ~126MB "fileSize" : 8519680000, // ~8.5GB "ok" : 1 }
3.Resident Memory ! ! indexSize + dataSize <= RAM
4.Page Faults > db.serverStatus().extra_info { ! "note" : "fields vary
by platform", ! “heap_usage_bytes” : 210656, ! “page_faults” : 2381 }
5.Write Lock Percentage > db.serverStatus().globalLock { "totalTime" : 2809217799, "lockTime"
: 13416655, "ratio" : 0.004775939766854653, }
Concurrency • One writer or many readers • Global RW
Lock • Yields on long-running ops and if we’re likely to go to disk.
High Lock Percentage? You’re Probably Paging!
6.Reader and Writer Queues > db.serverStatus().globalLock { "totalTime" : 2809217799,
"lockTime" : 13416655, "ratio" : 0.004775939766854653, "currentQueue" : { "total" : 1, "readers" : 1, "writers" : 0 }, "activeClients" : { "total" : 2, "readers" : 1, "writers" : 1 }
6.Reader and Writer Queues > db.currentOp() { "inprog" : [
{ "opid" : 6996, "active" : true, "lockType" : "read", "waitingForLock" : true, "secs_running" : 1, "op" : "query", "ns" : "docs.spreadsheets", "query" : { “username” : “Hackett, Bernie” }, "client" : "10.71.194.111:51015", "desc" : "conn", "threadId" : "0x152693000", "numYields" : 0 },
7.Background Flushing > db.serverStatus().backgroundFlushing { "flushes" : 5634, "total_ms" :
83556, "average_ms" : 14.830670926517572, "last_ms" : 4, "last_finished" : ISODate("2011-09-30T03:30:59.052Z") }
Disk Considerations • Raid • SSD • SAN?
8.Connections > db.serverStatus().connections { "current" : 7, "available" : 19993
}
9.Network Speed > db.serverStatus().network { "bytesIn" : 877291, "bytesOut" :
846300, "numRequests" : 9186 }
10.Fragmentation db.spreadsheets.stats() { "ns" : "docs.spreadhseets", "size" : 8200046932, //
~8GB "storageSize" : 11807223808, // ~11GB "paddingFactor" : 1.4302, "totalIndexSize" : 345964544, // ~345MB "indexSizes" : { "_id_" : 66772992, “username_1_filename_1” : 146079744, “username_1_updated_at_1” : 133111808 }, "ok" : 1 }
10.Fragmentation 2 is the Magic Number
storageSize / size > 2 • Might not be reclaiming
free space fast enough • Padding factor might not be correctly calibrated db.spreadsheets.runCommand(“compact”)
paddingFactor > 2 • You might have the wrong data
model • You might be growing documents too much • Should review Schema Design
download at mongoDB.org
We’re Hiring Engineers, Sales, Evangelist, Marketing, Support, Developers @mongodb_jobs http://linkd.in/joinmongo
We’re Always Around For Conferences, Appearances and Meetups 10gen.com/events @mongodb
h2p://bit.ly/mongo8