查看mongodb的狀態


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")

 

4、打開profiler,類似於mysql的slow_log慢查詢,默認是關閉的。

0:關閉,不收集任何數據。
1:收集慢查詢數據,默認是100毫秒。
2:收集所有數據

首先切換到需要打開慢查詢的庫

>use  spark

>db.auth('test','test123')

>db.setProfilingLevel(2)

>db.getProfilingLevel()

可以自定義時間,單位是ms:

>db.setProfilingLevel(1,300)

 

查看:

>db.system.profile.find().sort({$natural:-1})

  • ts:時間戳
  • info:具體的操作
  • millis:操作所花時間,毫秒

查看profiler的數量:

>db.system.profile.count();

 

查看影響的行數:

>db.system.profile.explain()

 

5、查看副本集同步延遲

> db.printSlaveReplicationInfo()

 

6、3.4版本以后默認的數據庫存儲引擎是wiredTiger,查看當前占用的內存

> db.runCommand({ serverStatus: 1}).wiredTiger.cache["bytes currently in the cache"]

16179710118

設置cacheSize為10G,根據自己的服務器情況指定:

>db.adminCommand({setParameter: 1, wiredTigerEngineRuntimeConfig: "cache_size=10G"})

{ "was" : "", "ok" : 1 }

 

上面的設置重啟后就失效了,可以寫進配置文件

systemLog:
  destination: file
  logAppend: true
  path: /data/log/mongodb.log
storage:
  dbPath: /data/mongodata
  journal:
    enabled: true
  engine: wiredTiger
  wiredTiger:
    engineConfig:
    cacheSizeGB: 10
processManagement:
  fork: true  # fork and run in background
  pidFilePath: /var/run/mongod.pid
net:
  port: 27017
 # bindIp: 0.0.0.0  # Listen to local interface only, comment to listen on all interfaces.
replication:
  replSetName: rs3
  oplogSizeMB: 5000
security:
  keyFile: "/data/mongodb.key"
  clusterAuthMode: "keyFile"
  authorization: "enabled"

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM