中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

MongoDB中mongostat怎么用

發布時間:2021-11-17 09:47:28 來源:億速云 閱讀:538 作者:小新 欄目:云計算

這篇文章將為大家詳細講解有關MongoDB中mongostat怎么用,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

mongostat詳解

  mongostat是mongdb自帶的狀態檢測工具,在命令行下使用。它會間隔固定時間獲取mongodb的當前運行狀態,并輸出。如果你發現數據庫突然變慢或者有其他問題的話,你第一手的操作就考慮采用mongostat來查看mongo的狀態。MongoDB中mongostat怎么用

它的輸出有以下幾列:

  •   inserts/s 每秒插入次數

  •   query/s 每秒查詢次數

  •   update/s 每秒更新次數

  •   delete/s 每秒刪除次數

  •   getmore/s 每秒執行getmore次數

  •   command/s 每秒的命令數,比以上插入、查找、更新、刪除的綜合還多,還統計了別的命令

  •   flushs/s 每秒執行fsync將數據寫入硬盤的次數。

  •   mapped/s 所有的被mmap的數據量,單位是MB,

  •   vsize 虛擬內存使用量,單位MB

  •   res 物理內存使用量,單位MB

  •   faults/s 每秒訪問失敗數(只有Linux有),數據被交換出物理內存,放到swap。不要超過100,否則就是機器內存太小,造成頻繁swap寫入。此時要升級內存或者擴展

  •   locked % 被鎖的時間百分比,盡量控制在50%以下吧

  •   idx miss % 索引不命中所占百分比。如果太高的話就要考慮索引是不是少了

  •   q t|r|w 當Mongodb接收到太多的命令而數據庫被鎖住無法執行完成,它會將命令加入隊列。這一欄顯示了總共、讀、寫3個隊列的長度,都為0的話表示mongo毫無壓力。高并發時,一般隊列值會升高。

  •   conn 當前連接數

  •   time 時間戳

使用profiler

  類似于MySQL的slow log, MongoDB可以監控所有慢的以及不慢的查詢。

MongoDB中mongostat怎么用

  Profiler默認是關閉的,你可以選擇全部開啟,或者有慢查詢的時候開啟。

  > use test
  switched to db test
  > db.setProfilingLevel(2);
  {"was" : 0 , "slowms" : 100, "ok" : 1} // "was" is the old setting
  > db.getProfilingLevel()

  查看Profile日志

  > db.system.profile.find().sort({$natural:-1})
  {"ts" : "Thu Jan 29 2009 15:19:32 GMT-0500 (EST)" , "info" :
  "query test.$cmd ntoreturn:1 reslen:66 nscanned:0 query: { profile: 2 } nreturned:1 bytes:50" ,
  "millis" : 0} ...

  3個字段的意義

  •   ts:時間戳

  •   info:具體的操作

  •   millis:操作所花時間,毫秒

  不多說,此處有官方文檔。注意,造成滿查詢可能是索引的問題,也可能是數據不在內存造成因此磁盤讀入造成。

  使用Web控制臺

  Mongodb自帶了Web控制臺,默認和數據服務一同開啟。他的端口在Mongodb數據庫服務器端口的基礎上加1000,如果是默認的Mongodb數據服務端口(Which is 27017),則相應的Web端口為28017

MongoDB中mongostat怎么用

這個頁面可以看到

  •   當前Mongodb的所有連接

  •   各個數據庫和Collection的訪問統計,包括:Reads, Writes, Queries, GetMores ,Inserts, Updates, Removes

  •   寫鎖的狀態

  •   以及日志文件的最后幾百行(CentOS+10gen yum 安裝的mongodb默認的日志文件位于/var/log/mongo/mongod.log)

  可以參考上圖

  db.stat()

  獲取當前數據庫的信息,比如Obj總數、數據庫總大小、平均Obj大小等

  > use test
  switched to db test
  > db.stats()
  {
  "collections" : 9,
  "objects" : 4278845,
  "avgObjSize" : 224.56603031892953,
  "dataSize" : 960883236,
  "storageSize" : 1195438080,
  "numExtents" : 59,
  "indexes" : 13,
  "indexSize" : 801931264,
  "fileSize" : 6373244928,
  "ok" : 1
  }

  db.serverStatus()

  獲取服務器的狀態

  {
  "version" : "1.6.5",
  "uptime" : 7208469,
  "uptimeEstimate" : 7138829,
  "localTime" : "Wed Oct 26 2011 22:23:07 GMT+0800 (CST)",
  "globalLock" : {
  "totalTime" : 7208469556704,
  "lockTime" : 4959693717,
  "ratio" : 0.000688036992871448,
  "currentQueue" : {
  "total" : 0,
  "readers" : 0,
  "writers" : 0
  }
  },
  "mem" : {
  "bits" : 64,
  "resident" : 3131,
  "virtual" : 6172,
  "supported" : true,
  "mapped" : 4927
  },
  "connections" : {
  "current" : 402,
  "available" : 2599
  },
  "extra_info" : {
  "note" : "fields vary by platform",
  "heap_usage_bytes" : 832531920,
  "page_faults" : 8757
  },
  "indexCounters" : {
  "btree" : {
  "accesses" : 2821726,
  "hits" : 2821725,
  "misses" : 1,
  "resets" : 0,
  "mi***atio" : 3.543930204420982e-7
  }
  },
  "backgroundFlushing" : {
  "flushes" : 120133,
  "total_ms" : 73235923,
  "average_ms" : 609.6236920746173,
  "last_ms" : 1332,
  "last_finished" : "Wed Oct 26 2011 22:22:23 GMT+0800 (CST)"
  },
  "cursors" : {
  "totalOpen" : 0,
  "clientCursors_size" : 0,
  "timedOut" : 238392
  },
  "repl" : {
  "ismaster" : true
  },
  "opcounters" : {
  "insert" : 269351,
  "query" : 19331151,
  "update" : 14199331,
  "delete" : 1,
  "getmore" : 145575,
  "command" : 55982302
  },
  "asserts" : {
  "regular" : 0,
  "warning" : 0,
  "msg" : 0,
  "user" : 27,
  "rollovers" : 0
  },
  "ok" : 1
  }

  需要關心的地方:

  •   connections 當前連接和可用連接數,聽過一個同行介紹過,mongodb最大處理到2000個連接就不行了(要根據你的機器性能和業務來設定),所以設大了沒意義。設個合理值的話,到達這個值mongodb就拒絕新的連接請求,避免被太多的連接拖垮。

  •   indexCounters:btree:misses 索引的不命中數,和hits的比例高就要考慮索引是否正確建立。你看我的”mi***atio” : 3.543930204420982e-7,很健康吧。所以miss率在mongostat里面也可以看

  •   其他的都能自解釋,也不是查看mongo健康狀況的關鍵,就不說明了。

  db.currentOp()

  Mongodb 的命令一般很快就完成,但是在一臺繁忙的機器或者有比較慢的命令時,你可以通過db.currentOp()獲取當前正在執行的操作。

  在沒有負載的機器上,該命令基本上都是返回空的

  > db.currentOp()
  { "inprog" : [ ] }

  以下是一個有負載的機器上得到的返回值樣例:

{ "opid" : "shard3:466404288", "active" : false, "waitingForLock" : false, "op" : "query", "ns" : "sd.usersEmails", "query" : { }, "client_s" : "10.121.13.8:34473", "desc" : "conn" },

  字段名字都能自解釋。如果你發現一個操作太長,把數據庫卡死的話,可以用這個命令殺死他

  > db.killOp("shard3:466404288")

關于“MongoDB中mongostat怎么用”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

衢州市| 方山县| 洪江市| 叶城县| 突泉县| 安平县| 曲阳县| 鹤壁市| 南靖县| 万全县| 临潭县| 凤山县| 枣强县| 嵩明县| 榆社县| 新宁县| 肃北| 万年县| 祁连县| 鄱阳县| 南充市| 黎川县| 广水市| 阿鲁科尔沁旗| 当涂县| 昆山市| 无为县| 茶陵县| 济南市| 高邮市| 五大连池市| 江西省| 绥中县| 定南县| 定襄县| 荥经县| 镇远县| 延安市| 河池市| 垣曲县| 金堂县|