MongoDB Database Profiler
2016-03-12 19:11 abce 阅读(592) 评论(0) 编辑 收藏 举报数据库profiler细粒度收集mongodb的写操作、游标、数据库命令等。可以在数据库级别或者实例级别开启profiling。
profiler将收集到的数据写入system.profile集合中。
profiling的级别:
0, 关闭profile,但是mongod会将超过slowOpThresholdMs的值操作写入日志
1, 只抓取slow操作,缺省是超过100毫秒的操作
2, 抓取所有数据库操作
1.查看是否开启profile功能:
> db.getProfilingLevel() 0 >
2.关闭profile功能:
> db.setProfilingLevel(0)
3.设置profile级别:
> db.setProfilingLevel(1,50) { "was" : 0, "slowms" : 100, "ok" : 1 } >
setProfilingLevel的第一个参数是设置当前数据的profiling级别,第二个参数是设置整个mongod实例的慢操作阈值。
4.设置整个mongod的profiling级别
#启动时,指定参数profile的值 ./mongod --profile=1 --slowms=15
示例:
查看profiler数据
数据库的profiler日志信息位于system.profile集合中。
> db.setProfilingLevel(1,50) { "was" : 1, "slowms" : 50, "ok" : 1 } > db.profilingTest.insert({i:1}) WriteResult({ "nInserted" : 1 }) > db.profilingTest.find() { "_id" : ObjectId("56e3f62673c59411c4b1234c"), "i" : 1 } > db.profilingTest.find({$where:'sleep(70)'}) > db.system.profile.find().pretty() { "op" : "insert", "ns" : "test.currentOpTest", "query" : { "insert" : "currentOpTest", "documents" : [ { "_id" : ObjectId("56e3ebb713b6892d02827dde"), "i" : 6411413 } ], "ordered" : true }, "ninserted" : 1, "keyUpdates" : 0, "writeConflicts" : 0, "numYield" : 0, "locks" : { "Global" : { "acquireCount" : { "r" : NumberLong(1), "w" : NumberLong(1) } }, "Database" : { "acquireCount" : { "w" : NumberLong(1) } }, "Collection" : { "acquireCount" : { "w" : NumberLong(1) } } }, "responseLength" : 25, "protocol" : "op_command", "millis" : 50, "execStats" : { }, "ts" : ISODate("2016-03-12T10:13:11.073Z"), "client" : "127.0.0.1", "allUsers" : [ ], "user" : "" } { "op" : "insert", "ns" : "test.currentOpTest", "query" : { "insert" : "currentOpTest", "documents" : [ { "_id" : ObjectId("56e3ebb713b6892d02827de6"), "i" : 6411421 } ], "ordered" : true }, "ninserted" : 1, "keyUpdates" : 0, "writeConflicts" : 0, "numYield" : 0, "locks" : { "Global" : { "acquireCount" : { "r" : NumberLong(1), "w" : NumberLong(1) } }, "Database" : { "acquireCount" : { "w" : NumberLong(1) } }, "Collection" : { "acquireCount" : { "w" : NumberLong(1) } } }, "responseLength" : 25, "protocol" : "op_command", "millis" : 166, "execStats" : { }, "ts" : ISODate("2016-03-12T10:13:11.252Z"), "client" : "127.0.0.1", "allUsers" : [ ], "user" : "" } { "op" : "insert", "ns" : "test.currentOpTest", "query" : { "insert" : "currentOpTest", "documents" : [ { "_id" : ObjectId("56e3ed7e13b6892d028f10a4"), "i" : 7235419 } ], "ordered" : true }, "ninserted" : 1, "keyUpdates" : 0, "writeConflicts" : 0, "numYield" : 0, "locks" : { "Global" : { "acquireCount" : { "r" : NumberLong(1), "w" : NumberLong(1) } }, "Database" : { "acquireCount" : { "w" : NumberLong(1) } }, "Collection" : { "acquireCount" : { "w" : NumberLong(1) } } }, "responseLength" : 25, "protocol" : "op_command", "millis" : 58, "execStats" : { }, "ts" : ISODate("2016-03-12T10:20:46.223Z"), "client" : "127.0.0.1", "allUsers" : [ ], "user" : "" } { "op" : "insert", "ns" : "test.currentOpTest", "query" : { "insert" : "currentOpTest", "documents" : [ { "_id" : ObjectId("56e3eea513b6892d02975bee"), "i" : 7778981 } ], "ordered" : true }, "ninserted" : 1, "keyUpdates" : 0, "writeConflicts" : 0, "numYield" : 0, "locks" : { "Global" : { "acquireCount" : { "r" : NumberLong(1), "w" : NumberLong(1) } }, "Database" : { "acquireCount" : { "w" : NumberLong(1) } }, "Collection" : { "acquireCount" : { "w" : NumberLong(1) } } }, "responseLength" : 25, "protocol" : "op_command", "millis" : 149, "execStats" : { }, "ts" : ISODate("2016-03-12T10:25:41.989Z"), "client" : "127.0.0.1", "allUsers" : [ ], "user" : "" } { "op" : "insert", "ns" : "test.currentOpTest", "query" : { "insert" : "currentOpTest", "documents" : [ { "_id" : ObjectId("56e3f2bf13b6892d02b4401b"), "i" : 9672402 } ], "ordered" : true }, "ninserted" : 1, "keyUpdates" : 0, "writeConflicts" : 0, "numYield" : 0, "locks" : { "Global" : { "acquireCount" : { "r" : NumberLong(1), "w" : NumberLong(1) } }, "Database" : { "acquireCount" : { "w" : NumberLong(1) } }, "Collection" : { "acquireCount" : { "w" : NumberLong(1) } } }, "responseLength" : 25, "protocol" : "op_command", "millis" : 143, "execStats" : { }, "ts" : ISODate("2016-03-12T10:43:11.201Z"), "client" : "127.0.0.1", "allUsers" : [ ], "user" : "" } { "op" : "insert", "ns" : "test.profilingTest", "query" : { "insert" : "profilingTest", "documents" : [ { "_id" : ObjectId("56e3f62673c59411c4b1234c"), "i" : 1 } ], "ordered" : true }, "ninserted" : 1, "keyUpdates" : 0, "writeConflicts" : 0, "numYield" : 0, "locks" : { "Global" : { "acquireCount" : { "r" : NumberLong(2), "w" : NumberLong(2) } }, "Database" : { "acquireCount" : { "w" : NumberLong(1), "W" : NumberLong(1) } }, "Collection" : { "acquireCount" : { "w" : NumberLong(1), "W" : NumberLong(1) } } }, "responseLength" : 25, "protocol" : "op_command", "millis" : 88, "execStats" : { }, "ts" : ISODate("2016-03-12T10:57:42.769Z"), "client" : "127.0.0.1", "allUsers" : [ ], "user" : "" } { "op" : "query", "ns" : "test.profilingTest", "query" : { "find" : "profilingTest", "filter" : { } }, "keysExamined" : 0, "docsExamined" : 1, "cursorExhausted" : true, "keyUpdates" : 0, "writeConflicts" : 0, "numYield" : 0, "locks" : { "Global" : { "acquireCount" : { "r" : NumberLong(2) } }, "Database" : { "acquireCount" : { "r" : NumberLong(1) } }, "Collection" : { "acquireCount" : { "r" : NumberLong(1) } } }, "nreturned" : 1, "responseLength" : 145, "protocol" : "op_command", "millis" : 94, "execStats" : { "stage" : "COLLSCAN", "filter" : { "$and" : [ ] }, "nReturned" : 1, "executionTimeMillisEstimate" : 0, "works" : 3, "advanced" : 1, "needTime" : 1, "needYield" : 0, "saveState" : 0, "restoreState" : 0, "isEOF" : 1, "invalidates" : 0, "direction" : "forward", "docsExamined" : 1 }, "ts" : ISODate("2016-03-12T10:57:55.996Z"), "client" : "127.0.0.1", "allUsers" : [ ], "user" : "" } { "op" : "query", "ns" : "test.profilingTest", "query" : { "find" : "profilingTest", "filter" : { "$where" : "sleep(70)" } }, "keysExamined" : 0, "docsExamined" : 1, "cursorExhausted" : true, "keyUpdates" : 0, "writeConflicts" : 0, "numYield" : 1, "locks" : { "Global" : { "acquireCount" : { "r" : NumberLong(8) } }, "Database" : { "acquireCount" : { "r" : NumberLong(4) } }, "Collection" : { "acquireCount" : { "r" : NumberLong(4) } } }, "nreturned" : 0, "responseLength" : 109, "protocol" : "op_command", "millis" : 1030, "execStats" : { "stage" : "COLLSCAN", "filter" : { "$where" : undefined }, "nReturned" : 0, "executionTimeMillisEstimate" : 70, "works" : 3, "advanced" : 0, "needTime" : 2, "needYield" : 0, "saveState" : 1, "restoreState" : 1, "isEOF" : 1, "invalidates" : 0, "direction" : "forward", "docsExamined" : 1 }, "ts" : ISODate("2016-03-12T10:58:07.439Z"), "client" : "127.0.0.1", "allUsers" : [ ], "user" : "" } >
5.修改system.profile集合的大小
#1.关闭profiling > db.setProfilingLevel(0) #2.删除system.profile集合 > db.system.profile.drop() #3.创建新得system.profile > db.createCollection( "system.profile", { capped: true, size:4000000 } ) #4.重新开启profiling功能 > db.setProfilingLevel(1)