1. 程式人生 > >MongoDB 執行狀態、效能監控,分析

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

mongostat詳解

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

它的輸出有以下幾列:

  • 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

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

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

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

檢視Profile日誌

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

3個欄位的意義

  • ts:時間戳
  • info:具體的操作
  • millis:操作所花時間,毫秒

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

使用Web控制檯

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

這個頁面可以看到

  • 當前Mongodb的所有連線
  • 各個資料庫和Collection的訪問統計,包括:Reads, Writes, Queries, GetMores ,Inserts, Updates, Removes
  • 寫鎖的狀態
  • 以及日誌檔案的最後幾百行(CentOS+10gen yum 安裝的mongodb預設的日誌檔案位於/var/log/mongo/mongod.log)

可以參考右邊的截圖

db.stat()

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

01 > use test

相關推薦

MongoDB 執行狀態效能監控分析

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

使用libvlc播放音樂實時獲取位置播放狀態時長播放httpURL

#include <iostream> #include <unistd.h> #include "vlc/vlc.h" #include "libvlc.h" #include "libvlc_media_player.h" #include "libvlc_me

在k8s叢集中利用prometheus的jmx_exporter進行tomcat的JVM效能監控並用grafana作前端展示

查找了很多文件,沒有完全達到我要求的, 於是,作了一定的調整,成現在這樣。 操作步驟如下: 一,準備好兩個檔案。 jmx_prometheus_javaagent-0.3.1.jar jmx_exporter.yml jmx_exporter.yml作最簡單配置如下: --- rules

建立多個執行資料共享問題分析

Join 多個執行緒執行順序是亂的,跟作業系統內部對執行緒的排程機制有關。 主執行緒等待子執行緒執行完畢後才執行 void myprint(int item) { cout << "執行緒編號" << item << endl; } int main

在Oozie 中排程執行shellhive 指令碼以及通過shell指令碼執行hive/sqoop/shell指令碼的方法

  最近專案需要用到OOzie工具,可是找了好久,也沒有找到一個完整的、統一的解決和部署方案。經過努力,終於打通了其中的所有環節,解決了各種坑爹的問題。   首先,就專案需求做一個簡單的介紹:      專案需要從mysql中匯入資料到hive進行離線計算後,再導回到mys

Android 效能監控分析方法

Android應用效能測試通常包括:啟動時間、記憶體、CPU、耗電量、流量、流暢度等。 top 命令檢視CPU佔用率 top命令使用 Usage: top [ -m max_procs ] [ -n iterations ] [ -

SqlServer效能優化用SQL【執行次數和效能監控

-- 查詢邏輯讀取最高的查詢(儲存過程) SELECT TOP ( 25 )         P.name AS [SP Name] ,         Deps.total_logical_reads AS [Tota

JVM系列:三效能監控及工具

Sun JDK自帶監控和故障處理工具 jps 顯示Hotspot虛擬機器繼承 jstat 收集Hotspot虛擬機器的執行資料 jinfo 顯示虛擬機器配置資訊 jmap 生成虛擬機器的記憶體轉儲快照(heapdump檔案) jhat 用於分析heapdump檔案,

普通索引和唯一索引的區別效能差異以及其他索引簡介

今天在我的虛擬機器中佈置了環境,測試抓圖如下: 抓的這幾個都是第一次執行的,刷了幾次後,取平均值,效率大致相同,而且如果在一個列上同時建唯一索引和普通索引的話,mysql會自動選擇唯一索引。 谷歌一下: 唯一索引和普通索引使用的結構都是B-tree,執行時間複

【Redis】狀態效能監控命令

 1、redis-benchmark  redis基準資訊,redis伺服器效能檢測 redis-benchmark -h localhost -p 6379 -c 100 -n 100000 100個併發連線,100000個請求,檢測host為localhost

WIN10下 能執行javajava -version卻不能執行javac的解決方法

之前直接使用idea的,很少用到cmd的javac,所以沒意識到這個問題,最近在學習applet的時候遇到了這個問題。在網上看了一些其他人的解決方案,最後結合自己的情況解決了問題,希望可以幫到大家。 問題主要是Path路徑的修改,以前path路徑中包含

redis狀態效能監控

1、redis-benchmark  redis基準資訊,redis伺服器效能檢測 redis-benchmark -h localhost -p 6379 -c 100 -n 100000  100個併發連線,100000個請求,檢測host為localhost 埠為63

高併發程式設計系列:4種常用Java執行緒鎖的特點效能比較使用場景

高併發程式設計系列:4種常用Java執行緒鎖的特點,效能比較、使用場景 http://youzhixueyuan.com/4-kinds-of-java-thread-locks.html   在Java併發程式設計中,經常遇到多個執行緒訪問同一個 共享資源 ,這時候作為開發者

4種常用Java執行緒鎖的特點效能比較使用場景

文章目錄 多執行緒的緣由 多執行緒併發面臨的問題 4種Java執行緒鎖(執行緒同步) Java執行緒鎖總結 多執行緒的緣由 在出現了程序之後,作業系統的效能得到了大大的提升。雖然程序的出現解決了作業系統的併

Java 多執行緒下2種安全效能靠譜的單例模式

懶漢式-雙重核驗: package com.zzf.concurrence.singleinstance; /** * 懶漢式-雙重核驗 * @author zzf * */ public class SingleEHan { private Single

效能測試需求分析 業務PV量響應時間QPSTPS

一、 效能測試需求分析   1.1      效能測試需求內容 效能測試需求應包括以下內容: a)    測試場景及用例,用例訪問URL; b)   目標介面方法的入參、出參; c)    外部依賴的服務細節; d)  關鍵資料: 資料量、高峰業務PV量 e)  預期效能指

jProfiler遠端連線Linux監控jvmtomcat執行狀態(很詳細)

第一步、下載軟體 第二步、安裝 1、下載好後把tar包上傳的linux伺服器,解壓。    / 2、修改tomcat的bin/catalina.sh檔案       jprofiler的安裝路徑和埠,我配的埠是10001 3、再重啟tomcat 我們可以看看

Java 執行監控第 1 部分: Java 系統執行效能和可用性監控

簡介 當今的許多 Java 應用程式都依賴於一組複雜的分散式依賴關係和移動部件。很多外部因素都可能對應用程式的效能和可用性造成影響。這些影響基本上都無法完全消除或解決,且難以在預生成環境中準確模擬。Stuff happens。但是,您可以建立並維護一個全面的系統來監控應用程式的整個生態系

Java 執行監控第 2 部分: 編譯後插裝和效能監控

通過擷取進行 Java 插裝 擷取 的基本前提是通過一個擷取構造和收集傳入的入站與出站呼叫資訊,對特定的呼叫模式進行轉換。一個基本的擷取程式的實現會: 獲取對入站呼叫請求的當前時間。 取回出站響應的當前時間。 將執行時間作為兩次度量的增量計算出來。 將呼叫的執行時間提交給應用程式

javap -c 基本用法簡單位元組檔案解釋分析try 中returnfinally執行順序問題

1、初始javap,通過javap命令檢視程式計數器、區域性變量表,運算元棧變化。 public class TestZhaZhaJavap { public int test() { int a=100; int b=200; int c=