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
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
dcrosta
January 23, 2012
Technology
1.7k
3
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
MongoDB Diagnostics and Performance Tuning
From MongoDB LA, January 19, 2012.
dcrosta
January 23, 2012
More Decks by dcrosta
See All by dcrosta
Let the computer write the tests
dcrosta
0
110
Good Test, Bad Test
dcrosta
1
790
Exploring Python Code Objects (PyOhio)
dcrosta
4
360
Python Packaging for Humans
dcrosta
13
520
Exploring Python Code Objects
dcrosta
5
310
Keystone: Python Web Development, Simplified
dcrosta
4
360
MongoDB In the Cloud with Amazon EC2
dcrosta
6
470
Evolution without Migration
dcrosta
2
460
Other Decks in Technology
See All in Technology
바이브풀 라이프
arawn
0
110
AWS ネットワーク構築でハマった(ハマりかけた) 5選とそこから得た教訓
nagisa53
4
200
変化の早いClaude Codeを 書籍に落とし込む
oikon48
7
1.3k
AI ネイティブな組織に Gemini Enterprise Agent Platform がなぜ必要なのか
asei
1
190
Sansan Engineering Unit 紹介資料
sansan33
PRO
1
4.9k
Agent 時代の Kaggle 展望 / kaggle-in-the-agentic-era
upura
1
670
生成 AI の基礎 〜 サンプル実装で学ぶ基本原理
enakai00
7
4.4k
20260804_Q4AzureUpdateBite_FabricDataAgentの精度を高める設計.pdf
matayuuu
1
120
【CEDEC2026】『Relink』を拡張せよ - 『GRANBLUE FANTASY: Relink - Endless Ragnarok』の開発速度と品質を守るCI運用
cygames
PRO
0
140
モダンフロントエンド 開発研修
recruitengineers
PRO
4
560
Master Dataグループ紹介資料
sansan33
PRO
1
4.8k
Forza Horizon 6 のテレメトリ機能で 自動運転に使えそうな学習データを集める話
henjin0
0
150
Featured
See All Featured
Designing for Performance
lara
611
70k
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
340
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.8k
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.5k
How to Ace a Technical Interview
jacobian
281
24k
Large-scale JavaScript Application Architecture
addyosmani
515
110k
Java REST API Framework Comparison - PWX 2021
mraible
34
9.6k
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
1
230
Reflections from 52 weeks, 52 projects
jeffersonlam
356
21k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
Joys of Absence: A Defence of Solitary Play
codingconduct
1
430
[SF Ruby Conf 2025] Rails X
palkan
2
1.3k
Transcript
Diagnostics and Performance Tuning Dan Crosta, 10gen
[email protected]
@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