mongostat是mongodb自帶的一個用來查看mongodb運行狀態的工具
使用說明
mongostat -h 127.0.0.1:12345
字段說明
啟用后的狀況是這樣的
insert query update delete getmore command dirty used flushes vsize res qrw arw net_in net_out conn time *0 *0 *0 *0 0 1|0 0.0% 0.0% 0 3.11G 34.0M 0|0 1|0 157b 57.1k 1 Aug 11 07:59:21.760 *0 *0 *0 *0 0 2|0 0.0% 0.0% 0 3.11G 34.0M 0|0 1|0 158b 57.1k 1 Aug 11 07:59:22.760 *0 *0 *0 *0 0 1|0 0.0% 0.0% 0 3.11G 34.0M 0|0 1|0 157b 57.0k 1 Aug 11 07:59:23.761 *0 *0 *0 *0 0 1|0 0.0% 0.0% 0 3.11G 34.0M 0|0 1|0 157b 57.1k 1 Aug 11 07:59:24.762 *0 *0 *0 *0 0 1|0 0.0% 0.0% 0 3.11G 34.0M 0|0 1|0 157b 57.0k 1 Aug 11 07:59:25.764 *0 *0 *0 *0 0 1|0 0.0% 0.0% 0 3.11G 34.0M 0|0 1|0 157b 57.1k 1 Aug 11 07:59:26.764 *0 *0 *0 *0 0 1|0 0.0% 0.0% 0 3.11G 34.0M 0|0 1|0 157b 57.1k 1 Aug 11 07:59:27.764 *0 *0 *0 *0 0 2|0 0.0% 0.0% 1 3.11G 34.0M 0|0 1|0 159b 57.5k 1 Aug 11 07:59:28.757
inserts:當前mongodb插入數量
query:當前mongodb的查詢數量,數量以每秒為單位
update:當前mongodb的更新數量
delete:當前mongodb的刪除數量
getmore:在進行mongodb查詢時,每次並不是返回所有的數據,比如要一次查詢一百萬條,每次只會返回一定量的數據,當每次find的時候,getmore用來獲取以后的數據
command:執行命令的數量
flushes:在mongodb寫入數據,查詢數據時,我們看到的數據是在內存中,實際上並不是在內存中,有些是在硬盤上的,每個一段時間,mongodb會把內存數據刷到硬盤上,flushes就是看mongodb隔多久往磁盤上刷一次
mapped,vsize,res:mongodb所占據到磁盤空間大小和申請的內存大小
faults:如果數據沒有加塞到內存中,需要到硬盤上讀取
locked:鎖的情況
ids miss:表明當前查詢沒有使用索引的情況
qr|qw:在寫入或讀取數據時,並不是來個請求就處理,而是放到隊列中,如果請求比較多,或者mongodb處理比較慢,這樣qr,qw比較高,一般到qr,qw比較高時,比如幾百上千,mongodb的性能會出現明顯的下降
ar|aw:當前活躍的客戶端的數目
netIn,netOut:mongodb使用網卡的輸入流量
conn:連接到mongodb到連接數量
使用mongostat效果驗證
> for(i=0; i<100000; i++) db.imooc_2.insert({x:i}) WriteResult({ "nInserted" : 1 })
插入十萬條數據,同時另起一個窗口,查看mongostat狀態
./bin/mongostat -h 127.0.0.1:12345 insert query update delete getmore command dirty used flushes vsize res qrw arw net_in net_out conn time 2312 *0 *0 *0 0 2|0 0.4% 0.5% 0 3.13G 31.0M 0|0 1|0 273k 162k 3 Aug 12 07:12:33.009 2283 *0 *0 *0 0 1|0 0.4% 0.5% 0 3.13G 32.0M 0|0 1|0 270k 160k 3 Aug 12 07:12:34.010 2341 *0 *0 *0 0 1|0 0.4% 0.5% 0 3.13G 32.0M 0|0 1|0 276k 163k 3 Aug 12 07:12:35.010 2432 *0 *0 *0 0 2|0 0.4% 0.5% 0 3.13G 32.0M 0|0 1|1 287k 167k 3 Aug 12 07:12:36.010 2358 *0 *0 *0 0 2|0 0.4% 0.5% 0 3.13G 33.0M 0|0 1|0 279k 163k 3 Aug 12 07:12:37.009 2215 *0 *0 *0 0 1|0 0.4% 0.6% 0 3.13G 33.0M 0|0 1|0 262k 157k 3 Aug 12 07:12:38.009 2362 *0 *0 *0 0 1|0 0.4% 0.6% 0 3.13G 34.0M 0|0 1|0 279k 164k 3 Aug 12 07:12:39.010
可以看到insert,正在以每秒兩千多的速度插入數據
在實際使用中,根據情況的不同,都會不同對應都值,一般來說,對於性能,我們比較關心的是,qr,讀隊列,如果讀隊列比較多,說明系統的讀請求負載比較高,會出現比較嚴重的性能問題,qw,寫隊列,這兩個一般能直觀的反應系統的性能狀況,如果他們的數字大幅度提高,mongodb會立刻遇到問題