mongodb profiling慢請求監控日誌
0:關閉,不收集任何資料。
1:收集慢查詢資料,預設是100毫秒。
2:收集所有資料
檢視Profiling和設定
db.getProfilingStatus()
設定日誌收集級別和時間
db.setProfilingLevel(1,3000)
db.system.profiling.find().sort({$natural:-1}).limit(30)
以上要操作要是在test集合下面的話,只對該集合裡的操作有效,要是需要對整個例項有效,則需要在所有的集合下設定或則在開啟的時候開啟引數:
關閉Profiling
db.setProfilingLevel(0)
引數含義
drug:PRIMARY> db.system.profile.find().pretty()
{
"op" : "query", #操作型別,有insert、query、update、remove、getmore、command
"ns" : "mc.user", #操作的集合
"query" : { #查詢語句
"mp_id" : 5,
"is_fans" : 1,
"latestTime" : {
"$ne" : 0
},
"latestMsgId" : {
"$gt" : 0
},
"$where" : "new Date(this.latestNormalTime)>new Date(this.replyTime)"
},
"cursorid" : NumberLong("1475423943124458998"),
"ntoreturn" : 0, #返回的記錄數。例如,profile命令將返回一個文件(一個結果檔案),因此ntoreturn值將為1。limit(5)命令將返回五個檔案,因此ntoreturn值是5。如果ntoreturn值為0,則該命令沒有指定一些檔案返回,因為會是這樣一個簡單的find()命令沒有指定的限制。
"ntoskip" : 0, #skip()方法指定的跳躍數
"nscanned" : 304, #掃描數量
"keyUpdates" : 0, #索引更新的數量,改變一個索引鍵帶有一個小的效能開銷,因為資料庫必須刪除舊的key,並插入一個新的key到B-樹索引
"numYield" : 0, #該查詢為其他查詢讓出鎖的次數
"lockStats" : { #鎖資訊,R:全域性讀鎖;W:全域性寫鎖;r:特定資料庫的讀鎖;w:特定資料庫的寫鎖
"timeLockedMicros" : { #鎖
"r" : NumberLong(19467),
"w" : NumberLong(0)
},
"timeAcquiringMicros" : { #鎖等待
"r" : NumberLong(7),
"w" : NumberLong(9)
}
},
"nreturned" : 101, #返回的數量
"responseLength" : 74659, #響應位元組長度
"millis" : 19, #消耗的時間(毫秒)
"ts" : ISODate("2014-02-25T02:13:54.899Z"), #語句執行的時間
"client" : "127.0.0.1", #連結ip或則主機
"allUsers" : [ ],
"user" : "" #使用者
}
scanAndOrder:
scanAndOrder是一個布林值,是True當一個查詢不能使用的檔案的順序在索引中的排序返回結果:MongoDB中必須將其接收到的檔案從一個遊標後的檔案進行排序。
如果scanAndOrder是False,MongoDB的可使用這些檔案的順序索引返回排序的結果。即:True:文件進行排序,False:使用索引。
moved
更新操作在磁碟上移動一個或多個檔案到新的位置。表明本次update是否移動了硬碟上的資料,如果新記錄比原記錄短,通常不會移動當前記錄,如果新記錄比原記錄長,那麼可能會移動記錄到其它位置,這時候會導致相關索引的更新.磁碟操作更多,加上索引
更新,會使得這樣的操作比較慢.
moved:
檔案在磁碟上操作。
nupdated:
更新文件的數目
getmore是一個getmore 操作,getmore通常發生在結果集比較大的查詢時,第一個query返回了部分結果,後續的結果是透過getmore來獲取的。
日常使用profiling的查詢操作
返回最近的10條記錄
db.system.profile.find().limit(10).sort({ ts : -1 }).pretty()
#返回所有的操作,除command型別的
db.system.profile.find( { op: { $ne : 'command' } } ).pretty()
#返回特定集合
db.system.profile.find( { ns : 'mydb.test' } ).pretty()
#返回大於5毫秒慢的操作
db.system.profile.find( { millis : { $gt : 5 } } ).pretty()
#從一個特定的時間範圍內返回資訊
db.system.profile.find(
{
ts : {
$gt : new ISODate("2012-12-09T03:00:00Z") ,
$lt : new ISODate("2012-12-09T03:40:00Z")
}
}
).pretty()
#特定時間,限制使用者,按照消耗時間排序
db.system.profile.find(
{
ts : {
$gt : new ISODate("2011-07-12T03:00:00Z") ,
$lt : new ISODate("2011-07-12T03:40:00Z")
}
},
{ user : 0 }
).sort( { millis : -1 }
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28211342/viewspace-2213189/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 黑盒監控、日誌監控
- GoAccess請求監控Go
- Mysql事件監控日誌MySql事件
- 簡單分析MySQL 一則慢日誌監控誤報問題MySql
- 小程式日誌監控工具
- 03-Loki 日誌監控Loki
- SpringBoot記錄HTTP請求日誌Spring BootHTTP
- ELK監控nginx日誌總結Nginx
- Grafana、Prometheus、mtail-日誌監控GrafanaPrometheusAI
- 部署Sentry日誌監控系統
- iris 系列文章 封裝 請求日誌封裝
- 如何使用 MySQL 慢查詢日誌進行效能優化 - Profiling、mysqldumpslow 例項詳解MySql優化
- 前端異常日誌監控 – 使用Sentry前端
- Zabbix如何監控Oracle的告警日誌Oracle
- 跟我一起學docker(15)--監控日誌和日誌管理Docker
- 日誌監控實踐 - 監控Agent整合Lua引擎實現多維度日誌採集
- 如何優雅地上報前端監控日誌前端
- 分散式系統監控(五)- 日誌分析分散式
- 使用zabbix監控oracle的後臺日誌Oracle
- 爬蟲日誌監控 -- Elastc Stack(ELK)部署爬蟲AST
- mongodb 監控指標MongoDB指標
- Scrapy的日誌等級和請求傳參
- Spring Cloud Gateway 之 請求應答日誌列印SpringCloudGateway
- Apache 記錄請求響應時間日誌Apache
- Linux下使用GoAccess監控Nginx訪問日誌LinuxGoNginx
- C#輕量級日誌監控器EasyLogMonitorC#
- 雲原生架構日誌監控最佳實踐架構
- MySQL:慢查詢日誌MySql
- mysql開啟慢日誌MySql
- pgbadger 慢日誌分析工具
- MySQL慢日誌優化MySql優化
- mysql 鎖的慢日誌MySql
- MySQL慢日誌全解析MySql
- 011.MongoDB效能監控MongoDB
- 自定義Egg.js的請求級別日誌JS
- 在 Linux 上用 Bash 指令碼監控 messages 日誌Linux指令碼
- Kubernetes Ingress 日誌分析與監控的最佳實踐
- mongodb 日誌分析工具mtoolsMongoDB