如何在MongoDB中使用mongostat監(jiān)控工具?相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個問題。
創(chuàng)新互聯(lián)公司是一家專業(yè)提供留壩企業(yè)網站建設,專注與網站建設、成都網站制作、HTML5建站、小程序制作等業(yè)務。10年已為留壩眾多企業(yè)、政府機構等服務。創(chuàng)新互聯(lián)專業(yè)的建站公司優(yōu)惠進行中。
mongostat是mongodb自帶的狀態(tài)檢測工具,在命令行下使用,會間隔固定時間獲取mongodb的當前運行狀態(tài),并輸出。
1、mongostat常用命令格式:
mongostat --host 192.168.11.11:27017 --username root --password 12345678 --authenticationDatabase admin
mongostat參數(shù)說明:
--host :指定IP地址和端口,也可以只寫IP,然后使用--port參數(shù)指定端口號
--username: 如果開啟了認證,則需要在其后填寫用戶名
--password : 不用多少,肯定是密碼
--authenticationDatabase:若開啟了認證,則需要在此參數(shù)后填寫認證庫(注意是認證上述賬號的數(shù)據(jù)庫)
命令輸出格式
2、各字段解釋說明:
insert/s : 官方解釋是每秒插入數(shù)據(jù)庫的對象數(shù)量,如果是slave,則數(shù)值前有*,則表示復制集操作
query/s : 每秒的查詢操作次數(shù)
update/s : 每秒的更新操作次數(shù)
delete/s : 每秒的刪除操作次數(shù)
getmore/s: 每秒查詢cursor(游標)時的getmore操作數(shù)
command: 每秒執(zhí)行的命令數(shù),在主從系統(tǒng)中會顯示兩個值(例如 3|0),分表代表 本地|復制命令
注: 一秒內執(zhí)行的命令數(shù)比如批量插入,只認為是一條命令(所以意義應該不大)
dirty: 僅僅針對WiredTiger引擎,官網解釋是臟數(shù)據(jù)字節(jié)的緩存百分比
used:僅僅針對WiredTiger引擎,官網解釋是正在使用中的緩存百分比
flushes:
For WiredTiger引擎:指checkpoint的觸發(fā)次數(shù)在一個輪詢間隔期間
For MMAPv1 引擎:每秒執(zhí)行fsync將數(shù)據(jù)寫入硬盤的次數(shù)
注:一般都是0,間斷性會是1, 通過計算兩個1之間的間隔時間,可以大致了解多長時間flush一次。flush開銷是很大的,如果頻繁的flush,可能就要找找原因了
vsize: 虛擬內存使用量,單位MB (這是 在mongostat 最后一次調用的總數(shù)據(jù))
res: 物理內存使用量,單位MB (這是 在mongostat 最后一次調用的總數(shù)據(jù))
注:這個和你用top看到的一樣, vsize一般不會有大的變動, res會慢慢的上升,如果res經常突然下降,去查查是否有別的程序占用大量內存。
qr: 客戶端等待從MongoDB實例讀數(shù)據(jù)的隊列長度
qw:客戶端等待從MongoDB實例寫入數(shù)據(jù)的隊列長度
ar: 執(zhí)行讀操作的活躍客戶端數(shù)量
aw: 執(zhí)行寫操作的活客戶端數(shù)量
注:如果這兩個數(shù)值很大,那么就是DB被堵住了,DB的處理速度不及請求速度。看看是否有開銷很大的慢查詢。如果查詢一切正常,確實是負載很大,就需要加機器了
netIn:MongoDB實例的網絡進流量
netOut:MongoDB實例的網絡出流量
注:此兩項字段表名網絡帶寬壓力,一般情況下,不會成為瓶頸
conn: 打開連接的總數(shù),是qr,qw,ar,aw的總和
注:MongoDB為每一個連接創(chuàng)建一個線程,線程的創(chuàng)建與釋放也會有開銷,所以盡量要適當配置連接數(shù)的啟動參數(shù),maxIncomingConnections,阿里工程師建議在5000以下,基本滿足多數(shù)場景
看完上述內容,你們掌握如何在mongodb中使用mongostat監(jiān)控工具的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!