使用任何乙個產品,必不可少的一項工作就是對其執行狀態和效能進行監控,監控可以讓你更了解它的運作方式,讓你更早的發現使用上的問題,下面文章對mongodb的監控做了詳細深入的**。推薦給各位使用mongodb的朋友。
mongostat詳解
mongostat是mongdb自帶的狀態檢測工具,在命令列下使用。它會間隔固定時間獲取mongodb的當前執行狀態,並輸出。如果你發現資料庫突然變慢或者有其他問題的話,你第一手的操作就考慮採用mongostat來檢視mongo的狀態。
它的輸出有以下幾列:
使用profiler
類似於mysql的slow log, mongodb可以監控所有慢的以及不慢的查詢。
profiler預設是關閉的,你可以選擇全部開啟,或者有慢查詢的時候開啟。
> use test
switched to db test
> db.setprofilinglevel(2);
// "was" is the old setting
> db.getprofilinglevel()
檢視profile日誌
> db.system.profile.find().sort()
nreturned:1 bytes:50" ,
"millis" : 0} ...
3個字段的意義
不多說,此處有官方文件。注意,造成滿查詢可能是索引的問題,也可能是資料不在記憶體造成因此磁碟讀入造成。
使用web控制台
mongodb自帶了web控制台,預設和資料服務一同開啟。他的埠在mongodb資料庫伺服器端口的基礎上加1000,如果是預設的mongodb資料服務埠(which is 27017),則相應的web埠為28017
這個頁面可以看到
可以參考上圖
db.stat()
獲取當前資料庫的資訊,比如obj總數、資料庫總大小、平均obj大小等
> use test
switched to db test
> db.stats()
db.serverstatus()
獲取伺服器的狀態
需要關心的地方:
db.currentop()
mongodb 的命令一般很快就完成,但是在一台繁忙的機器或者有比較慢的命令時,你可以通過db.currentop()獲取當前正在執行的操作。
在沒有負載的機器上,該命令基本上都是返回空的
> db.currentop()
以下是乙個有負載的機器上得到的返回值樣例:
, "client_s" : "10.121.13.8:34473", "desc" : "conn" },
欄位名字都能自解釋。如果你發現乙個操作太長,把資料庫卡死的話,可以用這個命令殺死他
> db.killop("shard3:466404288")
mongodb monitoring service
mongodb monitoring service(mms)是mongodb廠商提供的監控服務,可以在網頁和android客戶端上監控你的mongodb狀況。
原文出處:
MongoDB執行狀態 效能監控,分析
這篇文章的目的是讓你知道怎麼了解你正在執行的mongdb是否健康。mongostat是mongdb自帶的狀態檢測工具,在命令列下使用。它會間隔固定時間獲取mongodb的當前執行狀態,並輸出。如果你發現資料庫突然變慢或者有其他問題的話,你第一手的操作就考慮採用mongostat來檢視mongo的狀態...
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...