1. 程式人生 > >查看mongodb的狀態

查看mongodb的狀態

lock 物理 sta man kill 就是 當前 查看 body

1、mongotop

#mongotop -h 127.0.0.1:27017 -u test -p test123 --authenticationDatabase admin

輸出說明:

  • ns:包含數據庫命名空間,後者結合了數據庫名稱和集合。
  • db:包含數據庫的名稱。名為 . 的數據庫針對全局鎖定,而非特定數據庫。
  • total:mongod花費的時間工作在這個命名空間提供總額。
  • read:提供了大量的時間,這mongod花費在執行讀操作,在此命名空間。
  • write:提供這個命名空間進行寫操作,這mongod花了大量的時間。

2、mongostat

#mongostat -h 127.0.0.1:27017 -u test -p test123 --authenticationDatabase admin

  • inserts/s 每秒插入次數
  • query/s 每秒查詢次數
  • update/s 每秒更新次數
  • delete/s 每秒刪除次數
  • getmore/s 每秒執行getmore次數
  • command/s 每秒的命令數,比以上插入、查找、更新、刪除的綜合還多,還統計了別的命令
  • flushs/s 每秒執行fsync將數據寫入硬盤的次數。
  • mapped/s 所有的被mmap的數據量,單位是MB,
  • vsize 虛擬內存使用量,單位MB
  • res 物理內存使用量,單位MB
  • faults/s 每秒訪問失敗數(只有Linux有),數據被交換出物理內存,放到swap。不要超過100,否則就是機器內存太小,造成頻繁swap寫入。此時要升級內存或者擴展
  • locked % 被鎖的時間百分比,盡量控制在50%以下吧
  • idx miss % 索引不命中所占百分比。如果太高的話就要考慮索引是不是少了
  • q t|r|w 當Mongodb接收到太多的命令而數據庫被鎖住無法執行完成,它會將命令加入隊列。這一欄顯示了總共、讀、寫3個隊列的長度,都為0的話表示mongo毫無壓力。高並發時,一般隊列值會升高。
  • conn 當前連接數
  • time 時間戳

3、查看當前的option

Mongodb 的命令一般很快就完成,但是在一臺繁忙的機器或者有比較慢的命令時,你可以通過db.currentOp()獲取當前正在執行的操作,在沒有負載的機器上,該命令基本上都是返回空的  

>db.currentOp()

{ "opid" : "shard3:466404288", "active" : false, "waitingForLock" : false, "op" : "query", "ns" : "sd.usersEmails", "query" : { }, "client_s" : "10.121.13.8:34473", "desc" : "conn" },

如果發現一個操作太長,把數據庫卡死的話,可以用以下命令殺死他:

>db.killOp("shard3:466404288")

查看mongodb的狀態