MongoDBのdb.CurrentOp()出力結果解析
4639 ワード
MongoDBのdb.CurrentOp()出力結果解析
db.currentOpは良いもので、その名の通り、現在の操作です.mongodbでは、insert/query/update/remove/getmore/commandなど、現在のデータベース上の現在の操作文情報を表示できます.直接実行
db.CurrentOp()は一般的に空の配列を返し、パラメータtrueを指定することで、ユーザーconnectionsがシステムcmmandに関連する操作を返すことができます.列を見てみましょう.
db.CurrentOp(true)は多くの情報を返します.
注意:
1秒=1000ミリ秒(ms)1ミリ秒=1/1000秒(s)
1秒=100000マイクロ秒(μs)1マイクロ秒=1/1000000秒(s)
dbを表示します.CurrentOp関数定義
rs_test:SECONDARY> db.currentOp function ( arg ){ var q = {} if ( arg ) { if ( typeof( arg ) == "object") Object.extend( q , arg ); else if ( arg ) q["$all"] = true; }
//don't send any read preference with psudo commands var _readPref = this.getMongo().getReadPrefMode(); try { this.getMongo().setReadPref(null); var results = this.$cmd.sys.inprog.findOne( q ); } finally { this.getMongo().setReadPref(_readPref); }
return results }
クライアント情報の印刷
現在の操作でアクティビティが停止し、動作がqueryであるという情報も取得できます.
現在の操作で進行中であり、操作動作がqueryである情報も取得できます.
以上のモニタリングにより、操作が遅いことが判明した場合、killを行うこともできます.
db.killOp(opid)/kill現在の操作opidは具体的な操作id番号であり、もちろんkillが進行中のものしかありません.
db.currentOpは良いもので、その名の通り、現在の操作です.mongodbでは、insert/query/update/remove/getmore/commandなど、現在のデータベース上の現在の操作文情報を表示できます.直接実行
db.CurrentOp()は一般的に空の配列を返し、パラメータtrueを指定することで、ユーザーconnectionsがシステムcmmandに関連する操作を返すことができます.列を見てみましょう.
db.CurrentOp(true)は多くの情報を返します.
{ "inprog" :
[
{
"opid" : 3434473,// id
"active" : ,//
"secs_running" : 0,//
"op" : "",// , (insert/query/update/remove/getmore/command)
"ns" : ".",// , : .
"query" : {//
},
"client" : ":",//
"desc" : "conn57683",//
"threadId" : "0x7f04a637b700",// id
"connectionId" : 57683,// id
"locks" : {//
"^" : "w",
"^local" : "W",
"^" : "W"
},
"waitingForLock" : false,// ,
"msg": ""
"numYields" : 0,
"progress" : {
"done" : ,
"total" :
}
"lockStats" : {
"timeLockedMicros" : {// ,
"R" : NumberLong(),// mongodb
"W" : NumberLong(),// mongodb
"r" : NumberLong(),//
"w" : NumberLong() //
},
"timeAcquiringMicros" : {// ,
"R" : NumberLong(),// mongodb
"W" : NumberLong(),// mongodb
"r" : NumberLong(),//
"w" : NumberLong()//
}
}
},
.....
]
}
注意:
1秒=1000ミリ秒(ms)1ミリ秒=1/1000秒(s)
1秒=100000マイクロ秒(μs)1マイクロ秒=1/1000000秒(s)
dbを表示します.CurrentOp関数定義
rs_test:SECONDARY> db.currentOp function ( arg ){ var q = {} if ( arg ) { if ( typeof( arg ) == "object") Object.extend( q , arg ); else if ( arg ) q["$all"] = true; }
//don't send any read preference with psudo commands var _readPref = this.getMongo().getReadPrefMode(); try { this.getMongo().setReadPref(null); var results = this.$cmd.sys.inprog.findOne( q ); } finally { this.getMongo().setReadPref(_readPref); }
return results }
クライアント情報の印刷
db.currentOp(true).inprog.forEach(
function(opDoc){
if (opDoc.client)
printjson(opDoc.client)
}
)
現在の操作でアクティビティが停止し、動作がqueryであるという情報も取得できます.
db.currentOp(true).inprog.forEach(
function(opDoc){//opDoc op
if(!opDoc.active && opDoc.op=='query')
printjson(opDoc)
}
)
現在の操作で進行中であり、操作動作がqueryである情報も取得できます.
db.currentOp(true).inprog.forEach(
function(opDoc){//opDoc op
if(opDoc.active && opDoc.op=='query')
printjson(opDoc)
}
)
以上のモニタリングにより、操作が遅いことが判明した場合、killを行うこともできます.
db.killOp(opid)/kill現在の操作opidは具体的な操作id番号であり、もちろんkillが進行中のものしかありません.