這篇文章的目的是讓你知道怎麼了解你正在執行的mongdb是否健康。
mongostat是mongdb自帶的狀態檢測工具,在命令列下使用。它會間隔固定時間獲取mongodb的當前執行狀態,並輸出。如果你發現資料庫突然變慢或者有其他問題的話,你第一手的操作就考慮採用mongostat來檢視mongo的狀態。
它的輸出有以下幾列:
類似於mysql的slow log, mongodb可以監控所有慢的以及不慢的查詢。
profiler預設是關閉的,你可以選擇全部開啟,或者有慢查詢的時候開啟。
1
> use test
2
switched to db test
3
> db.setprofilinglevel(2);
4
// "was" is the old setting
5
> db.getprofilinglevel()
6
2
檢視profile日誌
1
> db.system.profile.find().sort()
2
nreturned:1 bytes:50"
,
4
"millis"
: 0} ...
3個字段的意義
不多說,此處有官方文件。注意,造成滿查詢可能是索引的問題,也可能是資料不在記憶體造成因此磁碟讀入造成。
mongodb自帶了web控制台,預設和資料服務一同開啟。他的埠在mongodb資料庫伺服器端口的基礎上加1000,如果是預設的mongodb資料服務埠(which is 27017),則相應的web埠為28017
這個頁面可以看到
可以參考右邊的截圖
獲取當前資料庫的資訊,比如obj總數、資料庫總大小、平均obj大小等
01
> use test
02
switched 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...