首先請注意:
由於數據庫探查器性能產生負面影響,只有 啓用生產系統戰略間隔分析和儘可能少 。
您還可以啓用每個數據庫的分析器以減少對mongo實例的分析影響。 slowms=1
在你的情況下是多餘的profile=2
將記錄所有查詢,無論它們花費多長時間。
這裏有一個簡單的測試,以檢查無需額外CONFIGRATION查看配置文件數據:
db.setProfilingLevel(2)
db.testProf.insert({x : 1})
db.testProf.update({x : 1}, {$set : {x : 2}})
db.testProf.find({x : 2})
db.testProf.remove({x : 2})
db.setProfilingLevel(0)
現在,你可以查詢詳細的信息分佈數據:
db.system.profile.find().pretty()
這應該顯示運行信息用於上面的每個操作。下面是從更新操作細節的摘錄:
"op" : "update",
"ns" : "profDb.testProf",
"query" : {
"x" : 1
},
"updateobj" : {
"$set" : {
"x" : 2
}
},
"nscanned" : 1,
"nupdated" : 1,
"fastmod" : true,
"keyUpdates" : 0,
"numYield" : 0,
"lockStats" : {
"timeLockedMicros" : {
"r" : NumberLong(0),
"w" : NumberLong(1131)
},
"timeAcquiringMicros" : {
"r" : NumberLong(0),
"w" : NumberLong(5)
}
}
的query
字段包含的更新標準,而updateobj
字段包含對文檔的更新操作運行。 如果您執行相同的操作,並且query
字段仍爲空,則可能需要爲所有文檔運行更新,刪除等操作。
有關如何解釋的個人資料數據,請參見該文檔的詳細信息 - Database Profiler Output
編輯: 只注意到diaglog=3
配置。這個主要用於記錄和重放操作。這會保留非常詳細的日誌,並且也會對性能產生負面影響,我認爲您應該跳過它。分析足以達到想要的效果。
編輯: 不知道爲什麼你需要保存到文件中,因爲我覺得它更方便易有它集合中的文件數據。你可以查詢任何其他收集您感興趣的數據,我不知道任何方式直接流文件數據到一個文件,但您可以導出它像任何時間:
mongoexport --db profDb --collection system.profile --out profiler.json
你diaglog將所有數據寫入一個文件,但是這是一種內部格式,不方便用戶閱讀。
diaglog供內部使用,不適用於大多數用戶。
希望它有幫助!
什麼版本的mongodb? –