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

2021-09-04 16:10:02 字數 1804 閱讀 1535

使用任何乙個產品,必不可少的一項工作就是對其執行狀態和效能進行監控,監控可以讓你更了解它的運作方式,讓你更早的發現使用上的問題,下面文章對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...