mongostat是mongdb自帶的狀態檢測工具,在命令行下使用。它會間隔固定時間獲取mongodb的當前運行狀態,並輸出。如果你發現數據庫突然變慢或者有其他問題的話,你第一手的操作就考慮采用mongostat來查看mongo的狀態。
mongostat命令格式,當然也可以加參數:
在第一個例子中,mongostat將返回數據的每一秒,持續20秒。 mongostat收集數據的mongod實例上運行的本地主機接口端口27017。以下所有調用產生相同的行為:
mongostat -rowcount 20 1
mongostat -rowcount 20
mongostat -N 20 1
mongostat -N 20
在下面的例子中,mongostat返回的數據每5分鍾(300秒),只要在程序運行。 mongostat收集數據的mongod實例上運行的本地主機接口端口27017。以下兩種調用產生相同的行為。
mongostat - rowcount 0 300
mongostat -N 0 300
mongostat 300 mongostat是mongdb自帶的狀態檢測工具,在命令行下使用。它會間隔固定時間獲取mongodb的當前運行狀態,並輸出。如果你發現數據庫突然變慢或者有其他
在下面的例子中,mongostat返回的數據每5分鍾一個小時(12次)。mongostat收集數據的mongod實例上運行的本地主機接口端口27017。以下兩種調用產生相同的行為。
mongostat -rowcount 12 300
mongostat -N 12 300
在許多情況下,使用 -discover將幫助整組機器的狀態,提供更完整的快照。如果Mongos的過程中,連接到一個片式集群上運行在本地機器上的端口27017,你可以使用下面的形式從群集中的所有成員返回統計:
mongostat -discover
以上參考文檔:http://cn.docs.mongodb.org/manual/reference/mongostat/
主要詳細說明一下各列的意義(也可以參考./mongostat --help)
insert: 一秒內的插入數
query : 一秒內的查詢數
update: 一秒內的更新數
delete: 一秒內的刪除數
10條簡單的查詢可能比一條復雜的查詢速度還快, 所以數值的大小,意義並不大。
但至少可以知道,現在是否在處理查詢,是否在插入。
如果是slave,數值前往往有一個*, 代表是replicate操作
getmore: 查詢時游標(cursor)的getmore操作
用處不大
command: 一秒內執行的命令數
比如批量插入,只認為是一條命令。 意義不大。
如果是slave,會顯示兩個值, local|replicated,通過這兩個數值的比較,或許可以看出點問題。
flushes: 一秒內flush的次數
一般都是0,或者1,通過計算兩個1之間的間隔時間,可以大致了解多長時間flush一次。
flush開銷是很大的,如果頻繁的flush,可能就要找找原因了。
mapped:
vsize:
res:
這個和你用top看到的一樣,mapped, vsize一般不會有大的變動, res會慢慢的上升,如果res經常突然下降,去查查是否有別的程序狂吃內存。
faults:
別被這個名字嚇着,大壓力下這個數值往往不為0。如果經常不為0,那就該加內存了。
locked:
MongoDB就一把讀寫鎖,這里指的是寫鎖所住的時間百分比。這個數值過大(經常超過10%),那就是出狀況了。
idx miss:
非常重要的參數, 正常情況下,所有的查詢都應該通過索引,也就是idx miss為0。如果這里數值較大,是不是缺少索引。
qr|qw: queue lengths for clients waiting (read|write)
ar|aw: active clients (read|write)
如果這兩個數值很大,那么就是DB被堵住了,DB的處理速度不及請求速度。
看看是否有開銷很大的慢查詢。如果查詢一切正常,確實是負載很大,就需要加機器了。
netIn: network traffic in - bits
netOut: network traffic out - bits
網絡帶寬壓力,一般MongoDB,網絡不會成為瓶頸
conn: number of open connections
MongoDB為每一個連接創建一個線程,線程的創建和釋放也是有開銷的。盡量不要讓這個數值很大。
repl: 服務器當前狀態
M - master
SEC - secondary
REC - recovering
UNK - unknown
SLV - slave
time: 當前時間
如果在windows下的cmd窗口中執行mongostat命令時,可能由於窗口太窄,監控數據排列較亂而阻礙視覺的情況,大家可以把結果輸出到一個txt文件中,然后去查看這個文件,辦法是曲折了一些哈哈。
E:\mongodb-win32-x86_64-2.2.1\bin\mongostat -n 2 > E:\test.txt
打印2行結果到E盤的跟目錄下的test.txt中。
參考文檔:http://cn.docs.mongodb.org/manual/reference/mongostat/