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