Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
10 Key Performance Indicators - Bernie Hackett,...
Search
mongodb
December 12, 2011
Technology
370
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
10 Key Performance Indicators - Bernie Hackett, 10gen
MongoSV 2011
mongodb
December 12, 2011
More Decks by mongodb
See All by mongodb
NoSQL Now! 2012
mongodb
18
3.4k
MongoDB 2.2 At the Silicon Valley MongoDB User Group
mongodb
9
1.5k
Turning off the LAMP Hunter Loftis, Skookum Digital Works
mongodb
2
1.6k
Mobilize Your MongoDB! Developing iPhone and Android Apps in the Cloud Grant Shipley, Red Hat
mongodb
0
590
Beanstalk Data - MongoDB In Production Chris Siefken, CTO Beanstalk Data
mongodb
0
590
New LINQ support in C#/.NET driver Robert Stam, 10gen
mongodb
9
41k
Welcome and Keynote Aaron Heckman, 10gen
mongodb
0
560
Webinar Introduction to MongoDB's Java Driver
mongodb
1
1.3k
Webinar Intro to Schema Design
mongodb
4
1.8k
Other Decks in Technology
See All in Technology
人間はどの意思決定を手放せるのか
kawasima
15
8.1k
技術的負債から考える、AI時代のエンジニアリング投資 — ビズリーチの技術的負債と向き合った経験から、変更し続けられるソフトウェアを考える/ technical-debt-con2026
visional_engineering_and_design
4
3.7k
Oracle Cloud Infrastructure(OCI):Onboarding Session(はじめてのOCI/Oracle Supportご利⽤ガイド)
oracle4engineer
PRO
2
20k
「今盗んで、後で解く」に備える ― AWSのポスト量子暗号入門
yama3133
1
200
登壇の自信を奪う3匹のオバケ / 3 Ghosts That Rob You of Your Confidence in Public Speaking
pauli
9
1.1k
なぜ「決定性」が 決定的に重要なのか? Durable Execution 基盤の数理的理解 #serverlessjp / ServerlessDays Tokyo 2026
ytaka23
3
1.2k
ほんとうの信頼性はヒーローが死んでからはじまる / True reliability begins after the hero dies
vtryo
0
120
Kiro Meetup #8 Kiro アップデート (2026/3/21〜2026/9/24)
katzueno
1
170
ADKで始める業務改善 - AIエージェント開発時の考えと設計
harappa80
2
280
AIに任せた品質は、誰が見立てるのか - AI時代のテストマネジメント
nakanao
3
3k
開発投資の期待値を上げるプロダクトロードマップづくり ~プロダクトエンジニアが越境して事業を伸ばす~
kekekenta
1
250
フルカイテン株式会社 エンジニア向け採用資料
fullkaiten
0
12k
Featured
See All Featured
AI Search: Where Are We & What Can We Do About It?
aleyda
0
8k
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
1
320
Marketing Yourself as an Engineer | Alaka | Gurzu
gurzu
0
310
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
470
Designing Experiences People Love
moore
143
24k
Believing is Seeing
oripsolob
1
220
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.3k
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
3.1k
Reality Check: Gamification 10 Years Later
codingconduct
0
2.3k
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
1
610
Accessibility Awareness
sabderemane
1
220
BBQ
matthewcrist
89
10k
Transcript
10 Key Performance Indicators Bernie Hackett 10gen
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", "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: “Hackett, Bernie”} 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 + storageSize <= 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 h3p://bit.ly/mongo9