轉載地址:http://blog.csdn.net/gardener_db/article/details/7432888
mongostat實在是太有用了,如果DB出現了異常,我第一反應就是查看mongostat。
如果是營運的話,喝著咖啡,看著mongostat,生活真是愜意啊。
運行很簡單,./mongostat --host 10.7.3.97 --port 20000
主要詳細說明一下各列的意義(也可以參考./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: 目前時間