左膀mongostat,右臂mongotop——MongoDB的監控之道


  通常在排查MongoDB的性能時,我們首先想到的是MongoDB自身內置的兩個監測命令工具:mongostat和mongotop,通過這兩個命令的輸出可以了解到當前MongoDB實例的讀寫情況,現介紹它們的使用,環境為linux環境。

  1、mongostat命令

   在運行mongod實例的linux機器上運行如下命令:

mongostat --host ip:port -u "用戶名" -p "密碼" --authenticationDatabase "admin"

  (1)參數說明

  • ip:MongoDB集群中的路由服務器IP地址或者是某個副本集中主從庫的IP地址
  • port:路由服務器IP對應的端口號,或者副本集中主從庫IP對應的端口號
  • 用戶名和密碼:與上述ip、port所在的機器保持一致,都是相應管理員的賬號和密碼,若服務器上沒有添加權限認證的話,可以不用設置這些參數
  • authenticationDatabase:必須是admin庫

  (2)效果圖

  在上圖中,mongostat命令默認是每隔一秒輸出一行數據。

  (3)mongostat輸出字段說明

字段名稱 解釋描述
insert 每秒插入次數
query 每秒查詢次數
update 每秒更新次數
delete 每秒刪除次數
getmore 每秒執行getmore次數
command 每秒的命令數,除了插入、查找、更新、刪除命令統計外,還統計了別的命令
flushes

對於WiredTiger引擎來說,是指checkpoint的觸發次數在一個輪詢間隔期間

對於MMAPv1 引擎來說,是指每秒執行fsync將數據寫入硬盤的次數

一般flushes都是0,間斷性會是1, 通過計算兩個1之間的間隔時間,可以大致了解多長時間flush一次。

flush開銷是很大的,如果頻繁的flush,就需要排查一下原因了

mapped 所有的被mmap的數據量
vsize 虛擬內存使用量(在mongostat最后一次調用的總數據)
res

物理內存使用量(在mongostat最后一次調用的總數據)

vsize一般不會有大的變動, res會慢慢的上升,如果res經常突然下降,就需要排查一下是否存在其他的程序正在消費內存

faults 每秒訪問失敗數,與內存swap有關
qrw 客戶端讀寫等待隊列數量,高並發時,一般隊列值會升高
arw 客戶端讀寫活躍個數
net_in 網絡帶寬壓力,MongoDB實例的網絡進流量
net_out 網絡帶寬壓力,MongoDB實例的網絡出流量
conn 打開連接的總數,是qr,qw,ar,aw的總和
MongoDB為每一個連接創建一個線程,線程的創建與釋放也會有開銷,所以盡量要適當配置連接數的啟動參數maxIncomingConnections
time 時間戳

  (4)官方介紹

  點擊進入mongostat官方介紹

  2、mongotop命令

  在運行mongod實例的linux機器上運行如下命令:

mongotop --host ip:port -u "用戶名" -p "密碼"  --authenticationDatabase "admin"  60

  (1)參數說明

  • ip:必須是分片集群中主從庫的IP地址
  • port:必須是分片集群中主從庫的端口號
  • 用戶名和密碼:分片集群中副本集管理員權限的賬號,若沒有添加任何用戶的話,那么可以不用設置用戶名和密碼
  • authenticationDatabase:必須是admin庫
  • 60:表示每隔一分鍾就輸出一組數據,若不設置這個參數的話,那么默認是每隔一秒就輸出一組數據

  (2)效果圖

   在上圖中,我們看到兩組數據相差一秒鍾。

  (3)mongotop輸出字段說明

字段名出 解釋說明
ns 全稱namespace,由庫名+點號+集合名組成
total

指定周期內每次統計mongod實例的讀寫總耗時時長

(在上圖中指定的周期是60秒,默認是1秒)

read

指定周期內每次統計的讀操作耗時時長

(在上圖中指定的周期是60秒,默認是1秒)

write

指定周期內每次統計的寫操作耗時時長

(在上圖中指定的周期是60秒,默認是1秒)

  (4)官方介紹

  點擊進入mongotop官方介紹


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM