MongoDB整理筆記の效能監控

來源:互聯網
上載者:User

標籤:

    方法一:Mongostat

    此工具可以快速查看某組運行中的mongodb執行個體的統計資訊,用法如下:

[[email protected] bin]# ./mongostatinsert query update delete ...... locked % idx miss % qr|qw ar|aw conn time*0 *0 *0 *0 ...... 0 0 0|0 1|0 4 01:19:15*0 *0 *0 *0 ...... 0 0 0|0 1|0 4 01:19:16*0 *0 *0 *0 ...... 0 0 0|0 1|0 4 01:19:17

    它每秒鐘重新整理一次狀態值,提供良好的可讀性,通過這些參數可以觀察到一個整體的效能情況。

    欄位說明:

    insert: 每秒插入量
   query: 每秒查詢量
   update: 每秒更新量
   delete: 每秒刪除量
   locked: 鎖定量
   qr | qw: 用戶端查詢排隊長度(讀|寫)
   ar | aw: 活躍用戶端量(讀|寫)
   conn: 串連數
   time: 目前時間

    方法二:db.serverStatus

    這個命令最常用

> db.serverStatus(){"host" : "localhost.localdomain","version" : "1.8.1", --伺服器版本"process" : "mongod","uptime" : 3184, --啟動時間(秒)"uptimeEstimate" : 3174,"localTime" : ISODate("2012-05-28T11:20:22.819Z"),"globalLock" : {"totalTime" : 3183918151,"lockTime" : 10979,"ratio" : 0.000003448267034299149,"currentQueue" : {"total" : 0, --當前全部隊列量"readers" : 0, --讀請求隊列量"writers" : 0 --寫請求隊列量},"activeClients" : {"total" : 0, --當前全部用戶端串連量"readers" : 0, --用戶端讀請求量"writers" : 0 --用戶端寫請求量}},"mem" : {"bits" : 32, --32 位系統"resident" : 20, --佔用物量記憶體量"virtual" : 126, --虛擬記憶體量"supported" : true, --是否支援擴充記憶體"mapped" : 32},"connections" : {"current" : 1, --當前活動串連量"available" : 818 --剩餘空閑串連量},……"indexCounters" : {"btree" : {"accesses" : 0, --索引被訪問量"hits" : 0, --索引命中量"misses" : 0, --索引偏差量"resets" : 0,"missRatio" : 0 --索引偏差率(未命中率)}},……"network" : {"bytesIn" : 1953, --發給此伺服器的資料量(單位:byte)"bytesOut" : 25744, --此伺服器發出的資料量(單位:byte)"numRequests" : 30 --發給此伺服器的請求量},"opcounters" : {"insert" : 0, --插入操作的量"query" : 1, --查詢操作的量"update" : 0, --更新操作的量"delete" : 0, --刪除操作的量"getmore" : 0,"command" : 31 --其它操作的量},……"ok" : 1}>    方法三:db.stats     db.stats 查看資料庫狀態資訊    > db.stats(){"db" : "test","collections" : 7, --collection 數量"objects" : 28, --對象數量"avgObjSize" : 50.57142857142857, --對象平均大小"dataSize" : 1416, --資料大小"storageSize" : 31744, --資料大小(含預分配空間)"numExtents" : 7, --事件數目量"indexes" : 7, --索引數量"indexSize" : 57344, --索引大小"fileSize" : 50331648, --檔案大小"ok" : 1 --本次取stats 是否正常}>
View Code

    方法三:profile

    mongodb可以通過profile來監控資料,進行最佳化。查看當前是否開啟profile功能用命令db.getProfilingLevel()  返回level等級,值為0|1|2,分別代表意思:0代表關閉,1代表記錄慢命令,2代表全部開始profile功能為db.setProfilingLevel(level);  #level等級,值同上level為1的時候,慢命令預設值為100ms,更改為db.setProfilingLevel(level,slowms)如db.setProfilingLevel(1,50)這樣就更改為50毫秒通過db.system.profile.find() 查看當前的監控日誌。 

> db.system.profile.find({millis:{$gt:500}}){ "ts" : ISODate("2011-07-23T02:50:13.941Z"), "info" : "query order.order reslen:11022 nscanned:672230  \nquery: { status: 1.0 } nreturned:101 bytes:11006 640ms", "millis" : 640 }{ "ts" : ISODate("2011-07-23T02:51:00.096Z"), "info" : "query order.order reslen:11146 nscanned:672302  \nquery: { status: 1.0, user.uid: { $gt: 1663199.0 } }  nreturned:101 bytes:11130 647ms", "millis" : 647 }

    這裡值的含義是

    ts:命令執行時間

    info:命令的內容

    query:代表查詢

    order.order: 代表查詢的庫與集合

    reslen:返回的結果集大小,byte數

    nscanned:掃描記錄數量

    nquery:後面是查詢條件

    nreturned:返回記錄數及用時

    millis:所花時間

    如果發現時間比較長,那麼就需要作最佳化。

    比如nscanned數很大,或者接近記錄總數,那麼可能沒有用到索引查詢。

    reslen很大,有可能返回沒必要的欄位。

    nreturned很大,那麼有可能查詢的時候沒有加限制。

MongoDB整理筆記の效能監控

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.