MongoDB狀態查詢詳解:db.serverStatus()


基本信息

spock:PRIMARY>db.serverStatus()

{

  "host" :"h6.corp.yongche.org", //主機名

  "version" :"2.6.2", //mongodb版本

  "process" :"mongod", //mongodb進程,主要有mongod和mongos(分片集群中)兩種

  "pid" : NumberLong(4205), //mongod的pid進程號,可用shell的pidof mongod命令驗證

  "uptime" : 173120, //mongod服務啟動后到現在已經存活的秒數

  "uptimeMillis" :NumberLong(173119573), / /mongod服務啟動后到現在已經存活的毫秒數

  "uptimeEstimate" : 172173, //mongod內部計算出來的存活秒數

  "localTime" :ISODate("2014-12-31T06:41:01.029Z") //本地時間

}

 

鎖信息

Mongodb有4種鎖:r,R,w,W

R:表示全局讀鎖

W:全局寫鎖

r:某個數據庫讀鎖

w:某個數據庫寫鎖

 

spock:PRIMARY>db.serverStatus().locks

{

  "." : {

    "timeLockedMicros": {

      "R" :NumberLong(2532219), //mongod啟動后所有庫持有全局讀鎖的總微秒數

      "W" :NumberLong(2022505) // mongod啟動后所有庫持有全局寫鎖的總微秒數

    },

    "timeAcquiringMicros": {

      "R" :NumberLong(1489378), // mongod啟動后所有庫全局讀鎖的鎖等待的總微秒數

      "W" :NumberLong(361350) // mongod啟動后所有庫全局寫鎖的鎖等待的總微秒數

    }

  },

  "admin" : {

    "timeLockedMicros": {

      "r" :NumberLong(277350), // mongod啟動后admin數據庫持有的讀鎖時間

      "w" :NumberLong(0) // mongod啟動后admin數據庫持有的寫鎖時間

    },

    "timeAcquiringMicros": {

      "r" :NumberLong(11011), // mongod啟動后admin數據庫的讀鎖的鎖等待總時間

      "w" :NumberLong(0) // mongod啟動后admin數據庫的讀鎖的鎖等待總時間

    }

  },

  "local" : {

    "timeLockedMicros": {

      "r" :NumberLong(29750564),

      "w" :NumberLong(737)

    },

    "timeAcquiringMicros": {

      "r" :NumberLong(4074456),

      "w" :NumberLong(46)

    }

  },

  "jiangjianjian" : {

    "timeLockedMicros": {

      "r" :NumberLong(935802), //mongod啟動后jiangjianjian數據庫持有的讀鎖時間

      "w" :NumberLong(98) // mongod啟動后jiangjianjian數據庫持有的寫鎖時間

    },

    "timeAcquiringMicros": {

      "r" :NumberLong(262185), // mongod啟動后jiangjianjian數據庫的讀鎖的鎖等待總時間

      "w" : NumberLong(9) // mongod啟動后jiangjianjian數據庫的寫鎖的鎖等待總時間

    }

  },

  "test" : {

    "timeLockedMicros": {

      "r" :NumberLong(719696),

      "w" :NumberLong(141)

    },

    "timeAcquiringMicros": {

      "r" :NumberLong(332797),

      "w" :NumberLong(10)

    }

  }

}

 

全局鎖信息

spock:PRIMARY>db.serverStatus().globalLock

{

  "totalTime" :NumberLong("172059990000"), //mongod啟動后到現在的總時間,單位微秒

  "lockTime" :NumberLong(2031058), //mongod啟動后全局鎖鎖住的總時間,單位微秒

  "currentQueue" : {

    "total" : 0, //當前的全局鎖等待鎖等待的個數

    "readers" : 0, //當前的全局讀鎖等待個數

    "writers" : 0 //當前全局寫鎖等待個數

  },

  "activeClients" : {

    "total" : 0, //當前活躍客戶端的個數

    "readers" : 0, //當前活躍客戶端中進行讀操作的個數

    "writers" : 0 //當前活躍客戶端中進行寫操作的個數

  }

}

 

內存信息

bj1-farm1:PRIMARY>db.serverStatus().mem

{

  "bits" : 64, //操作系統位數

  "resident" : 45792, //物理內存消耗,單位M

  "virtual" : 326338, //虛擬內存消耗

  "supported" : true, //為true表示支持顯示額外的內存信息

  "mapped" : 161399, //映射內存

  "mappedWithJournal" : 322798 //除了映射內存外還包括journal日志消耗的映射內存

}

 

連接數信息

bj1-farm1:PRIMARY>db.serverStatus().connections

{

  "current" : 2581, //當前連接數

  "available" : 48619, //可用連接數

  "totalCreated" :NumberLong(187993238) //截止目前為止總共創建的連接數

}

可看到當前mongod的最大連接數即為51200=2581+48619

 

額外信息

bj1-farm1:PRIMARY>db.serverStatus().extra_info

{

  "note" : "fields vary byplatform", //表示當前這個extra_info的顯示信息依賴於底層系統

  "heap_usage_bytes" :206033064, //堆內存空間占用的字節數,僅linux適用

  "page_faults" : 11718117 //數據庫訪問數據時發現數據不在內存時的頁面數量,當數據庫性能很差或者數據量極大時,這個值會顯著上升

}

 

索引統計信息

bj1-farm1:PRIMARY>db.serverStatus().indexCounters

{

  "accesses" : 35369670951, //索引訪問次數,值越大表示你的索引總體而言建得越好,如果值增長很慢,表示系統建的索引有問題

  "hits" : 35369213426, //索引命中次數,值越大表示mogond越好地利用了索引

  "misses" : 0, //表示mongod試圖使用索引時發現其不在內存的次數,越小越好

  "resets" : 0, //計數器重置的次數

  "missRatio" : 0 //丟失率,即misses除以hits的值

}

 

 

后台刷新信息

bj1-farm1:PRIMARY>db.serverStatus().backgroundFlushing

{

  "flushes" : 171675, //數據庫刷新寫操作到磁盤的總次數,會逐漸增長

  "total_ms" : 432943335, //mongod寫數據到磁盤消耗的總時間,單位ms,

  "average_ms" :2521.8775884665793, //上述兩值的比例,表示每次寫磁盤的平均時間

  "last_ms" : 5329, //當前最后一次寫磁盤花去的時間,ms,結合上個平均值可觀察到mongd總體寫性能和當前寫性能

  "last_finished" :ISODate("2014-12-31T07:39:11.881Z") //最后一次寫完成的時間

}

 

游標信息

bj1-farm1:PRIMARY>db.serverStatus().cursors

{

  "note" : "deprecated,use server status metrics", //表示也可使用b.serverStatus().metrics.cursor命令看看

  "clientCursors_size" : 2, //mongodb當前為客戶端維護的游標個數

  "totalOpen" : 2, //和clientCursors_size一樣

  "pinned" : 0, //打開的pinned類型的游標個數

  "totalNoTimeout" : 0, //設置了經過一段不活躍時間以后不設置超時,即參數“ DBQuery.Option.noTimeout”值以后,打開的游標個數

  "timedOut" : 11 //從mongod啟動以來的游標超時個數,如果這個值很大或者一直在增長,可能顯示當前應用程序有錯誤

}

 

網絡信息

bj1-farm1:PRIMARY>db.serverStatus().network

{

  "bytesIn" :NumberLong("1391919214603"), //數據庫接收到的網絡傳輸字節數,可通過該值觀察是否到了預計的期望值

  "bytesOut" :NumberLong("1669479449423"), //從數據庫發送出去的網絡傳輸字節數

  "numRequests" : 5186060375 //mongod接收到的總的請求次數

}

 

副本集信息

bj1-farm1:PRIMARY>db.serverStatus().repl

{

  "setName" :"bj1-farm1", //副本集名稱

  "setVersion" : 4, //當前版本,每修改一次配置會自增1

  "ismaster" : true, //當前節點是否為master

  "secondary" : false, //當前節點是否為slave

  "hosts" : [ //副本集組成

    "172.16.0.150:27017",

    "172.16.0.152:27017",

    "172.16.0.151:27017"

  ],

  "primary" : "172.16.0.150:27017", //master所在的ip地址

  "me" :"172.16.0.150:27017" //當前節點的ip地址

}

 

副本集的操作計數器

bj1-farm1:PRIMARY>db.serverStatus().opcountersRepl

{

  "insert" : 599, // mongod replication最近一次啟動后的insert次數

  "query" : 0,

  "update" : 0,

  "delete" : 0,

  "getmore" : 0,

  "command" : 0

}

 

 

操作計數器

bj1-farm1:PRIMARY>db.serverStatus().opcounters

{

  "insert" : 17476744, //mongod最近一次啟動后的insert次數

  "query" : 4923585, // mongod最近一次啟動后的query次數

  "update" : 445136, // mongod最近一次啟動后的update次數

  "delete" : 301953, // mongod最近一次啟動后的delete次數

  "getmore" : 28737548, // mongod最近一次啟動后的getmore次數,這個值可能會很高,因為子節點會發送getmore命令,作為數據復制操作的一部分

  "command" : 32844821 //// mongod最近一次啟動后的執行command命令的次數

}

 

Asserts

bj1-farm1:PRIMARY>db.serverStatus().asserts

{

  "regular" : 65, //服務啟動后正常的asserts錯誤個數,可通過log查看更多該信息

  "warning" : 1, //服務啟動后的warning個數

  "msg" : 0, //服務啟動后的message assert個數

  "user" : 30655213, //服務啟動后的user asserts個數

  "rollovers" : 0 //服務啟動后的重置次數

}

writeBacksQueued

bj1-farm1:PRIMARY>db.serverStatus().writeBacksQueued

false //如果為true表示有需要被重新執行的操作,如果為false表示沒有

 

持久化(dur)

bj1-farm1:PRIMARY>db.serverStatus().dur

{

  "commits" : 29, //上次分組提交間隔之后,寫入journal的commit的次數

  "journaledMB" : 1.089536, //上次分組提交間隔之后,寫入journal的大小,單位M

  "writeToDataFilesMB" :2.035345, //上次分組提交間隔之后,從journal寫入到數據文件的大小

  "compression" : 0.49237888647866956,//journal日志的壓縮率

  "commitsInWriteLock" : 0, //提交的時候有寫鎖的次數,可以用該值判斷當前系統的寫壓力

  "earlyCommits" : 0, //在分組提交間隔前,請求commit的次數。用這個值可以判斷分組提交間隔,即 journal group commitinterval設置得是否合理

  "timeMs" : {

    "dt" : 3060, //收集數據所花的時間,單位ms

    "prepLogBuffer" :7, //准備寫入journal所花的時間,單位ms,該值越小表示journal性能越好

    "writeToJournal" :36, //真正寫入journal所花的時間,單位ms,該值和文件系統和硬件設備有關

    "writeToDataFiles": 34, //從journal寫入到數據文件所花的時間,單位ms

    "remapPrivateView": 18 //重新映射內存所花的時間,單位ms,值越小表示journal性能越好

  }

}

如果設置了分組提交間隔時間,該項還會在后面顯示journalCommitIntervalMs信息,即提交間隔,默認100ms。

 

記錄狀態信息

bj1-farm1:PRIMARY>db.serverStatus().recordStats

{

  "accessesNotInMemory" :4444249, //訪問數據時發現不在內存的總次數

  "pageFaultExceptionsThrown" :22198, //由於頁面錯誤而拋出異常的總次數

  "yc_driver" : {

    "accessesNotInMemory": 53441,

    "pageFaultExceptionsThrown": 18067

  },

  "yc_foot_print" : {

    "accessesNotInMemory": 0,

    "pageFaultExceptionsThrown": 0

  }

}

 

工作集配置

bj1-farm1:PRIMARY>db.serverStatus( { workingSet: 1 } ).workingSet

{

  "note" :"thisIsAnEstimate", //注釋

  "pagesInMemory" : 736105, //overseconds時間內在內存中的頁的數量,默認頁大小4k;如果你的數據集比內存還小,那么該值換算成大小就是數據集的大小;可以用該 值評估實際工作集的大小

  "computationTimeMicros" : 232590, //收集working set數據所花的時間,單位微秒,收集這些信息會影響服務器性能,請注意收集working set的頻率

  "overSeconds" : 502 //內存中從最新數據變到最舊的數據頁之間的所花的時間,單位秒。如果該值正在減少,或者值很小,表示working set已經遠大於內存值;如 果該值很大,表示data set <=內存值

}

 

metrics

bj1-farm1:PRIMARY>db.serverStatus().metrics

{

  "cursor" : { //游標的信息在上面已經介紹過

    "timedOut" :NumberLong(12),

    "open" : {

      "noTimeout": NumberLong(0),

      "pinned" :NumberLong(0),

      "total" : NumberLong(2)

    }

  },

  "document" : {

    "deleted" :NumberLong(4944851), //刪除記錄的總條數

    "inserted" :NumberLong(1066509660), //插入記錄的總條數

    "returned" :NumberLong("4594388182"), //返回記錄的總條數

    "updated" :NumberLong(27275088) //更新記錄的總條數

  },

  "getLastError" : {

    "wtime" : {

      "num" : 0, //w>1的getlasterror次數

      "totalMillis": 0 //時間

    },

  "wtimeouts" :NumberLong(0) //超時個數

  },

  //這部分詳細參考官方文檔

  //https://docs.mongodb.org/manual/reference/command/getLastError/#dbcmd.getLastError

  //https://docs.mongodb.org/manual/reference/command/serverStatus/#metrics

  "operation" : {

    "fastmod" : NumberLong(23990485), //使用$inc操作增加數據記錄,而且該列沒有使用索引的update次數

    "idhack" : NumberLong(0), //使用_id列進行查詢的次數,這是mongodb會默認使用_id索引並且跳過查詢計划解析

    "scanAndOrder" :NumberLong(33042) //無法使用索引進行排序的次數

  },

  "queryExecutor" : {

    "scanned" : NumberLong("334236661328319"),//查詢或查詢計划中掃描的總行數

    "scannedObjects" :NumberLong("776725143947") //

  },

  "record" : {

    "moves" :NumberLong(44166) //文檔在硬盤上的移動總次數

  },

  "repl" : {

    "apply" : {

      "batches": {

        "num": 162, //副本集中slave節點的oplog應用進程個數

        "totalMillis": 14 //mongod從oplog中操作所花的總時間

      },

      "ops" :NumberLong(599) //oplog操作的總個數

    },

    "buffer" : {

      "count" :NumberLong(0), //oplog buffer中的當前操作個數

      "maxSizeBytes": 268435456, //oplog buffer的最大值,常量,不可再配置

      "sizeBytes": NumberLong(0) //當前oplog buffer的大小

    },

    "network" : {

      "bytes" :NumberLong(282864), //從復制源總讀取的數據量總大小

      "getmores": {

          "num": 164, //執行getmores操作的個數

          "totalMillis": 15595 //getmores操作所花的總時間

      },

      "ops" :NumberLong(599), //從復制源中讀取的操作總次數

      "readersCreated" : NumberLong(12) //oplog查詢線程創建的個數,當發送connection,timeout,或者網絡操作,重新選擇復制源,該值都會增加

    },

    "preload" : {

      "docs" : {

        "num": 0,

        "totalMillis": 0

      },

      "indexes": {

        "num": 2396,

        "totalMillis": 0

      }

    }

  },

  "storage" : {

    "freelist" : {

      "search" :{

        "bucketExhausted": NumberLong(0),

        "requests": NumberLong(1091000085),

        "scanned": NumberLong(1139483866)

      }

    }

  },

  "ttl" : {

    "deletedDocuments": NumberLong(1015082231), //使用了ttl索引的次數

    "passes" :NumberLong(174032) //后天使用ttl索引刪除文檔的次數

  }

}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM