MongoDB執行狀態 效能監控,分析

2021-06-22 03:36:43 字數 2886 閱讀 1705

這篇文章的目的是讓你知道怎麼了解你正在執行的mongdb是否健康。

mongostat是mongdb自帶的狀態檢測工具,在命令列下使用。它會間隔固定時間獲取mongodb的當前執行狀態,並輸出。如果你發現資料庫突然變慢或者有其他問題的話,你第一手的操作就考慮採用mongostat來檢視mongo的狀態。

它的輸出有以下幾列:

類似於mysql的slow log, mongodb可以監控所有慢的以及不慢的查詢。

profiler預設是關閉的,你可以選擇全部開啟,或者有慢查詢的時候開啟。

1> use test

2switched to db test

3> db.setprofilinglevel(2);

4// "was" is the old setting

5> db.getprofilinglevel()

62

檢視profile日誌

1> db.system.profile.find().sort()

2nreturned:1 bytes:50",

4"millis": 0} ...

3個字段的意義

不多說,此處有官方文件。注意,造成滿查詢可能是索引的問題,也可能是資料不在記憶體造成因此磁碟讀入造成。

mongodb自帶了web控制台,預設和資料服務一同開啟。他的埠在mongodb資料庫伺服器端口的基礎上加1000,如果是預設的mongodb資料服務埠(which is 27017),則相應的web埠為28017

這個頁面可以看到

可以參考右邊的截圖

獲取當前資料庫的資訊,比如obj總數、資料庫總大小、平均obj大小等

01> use test

02switched to db test

03> db.stats()

04

獲取伺服器的狀態

01

15},

16"mem": ,

23"connections": ,

27"extra_info": ,

32"indexcounters":

40},

41"backgroundflushing": ,

48"cursors": ,

53"repl": ,

56"opcounters": ,

64"asserts": ,

71"ok": 1

72}

需要關心的地方:

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

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

1> db.currentop()

2

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

1,"client_s":"10.121.13.8:34473","desc":"conn"},

欄位名字都能自解釋。如果你發現乙個操作太長,把資料庫卡死的話,可以用這個命令殺死他

1> db.killop("shard3:466404288")

mongodb monitoring service(mms)是mongodb廠商提供的監控服務,可以在網頁和android客戶端上監控你的mongodb狀況。

MongoDB執行狀態 效能監控,分析

這篇文章的目的是讓你知道怎麼了解你正在執行的mongdb是否健康。它的輸出有以下幾列 profiler預設是關閉的,你可以選擇全部開啟,或者有慢查詢的時候開啟。1 use test 2switched to db test 3 db.setprofilinglevel 2 4 was is the ...

MongoDB 執行狀態 效能監控,分析

它的輸出有以下幾列 profiler預設是關閉的,你可以選擇全部開啟,或者有慢查詢的時候開啟。1 use test 2switched to db test 3 db.setprofilinglevel 2 4 was is the old setting 5 db.getprofilingleve...

MongoDB執行狀態 效能監控與分析

mongostat詳解 mongostat是mongdb自帶的狀態檢測工具,在命令列下使用。它會間隔固定時間獲取mongodb的當前執行狀態,並輸出。如果你發現資料庫突然變慢或者有其他問題的話,你第一手的操作就考慮採用mongostat來檢視mongo的狀態。它的輸出有以下幾列 使用profiler...