標籤:資料庫名 資料 資料庫執行個體 描述 and ase ESS 導致 強制停止
如果發出了一個執行耗時很長的任務給MongoDB伺服器,用戶端強制終止會導致任務依然在伺服器端執行。
這時MongoDB提供了查詢和管理正在執行任務的方式。
// db.currentOp() 獲得當前的所有`in progressing`的操作,包括insert/query/update/remove/getmore/command等> db.currentOp(true)
返回的資料結構如下:
{ "inprog" : [ { "opid" : 3434473,//操作的id "active" : <boolean>,//是否處於活動狀態 "secs_running" : 0,//操作運行了多少秒 "op" : "<operation>",//具體的操作行為,包括(insert/query/update/remove/getmore/command) "ns" : "<database>.<collection>",//操作的命名空間,如:資料庫名.集合名 "query" : {//具體的動作陳述式 }, "client" : "<host>:<outgoing>",//串連的用戶端資訊 "desc" : "conn57683",//資料庫連接描述 "threadId" : "0x7f04a637b700",//線程id "connectionId" : 57683,//資料庫連接id "locks" : {//鎖的相關資訊 "^" : "w", "^local" : "W", "^<database>" : "W" }, "waitingForLock" : false,//是否在等待並擷取鎖, "msg": "<string>" "numYields" : 0, "progress" : { "done" : <number>, "total" : <number> } "lockStats" : { "timeLockedMicros" : {//此操作獲得以下鎖後,把持的微秒時間 "R" : NumberLong(),//整個mongodb服務執行個體的全域讀鎖 "W" : NumberLong(),//整個mongodb服務執行個體的全域寫鎖 "r" : NumberLong(),//某個資料庫執行個體的讀鎖 "w" : NumberLong() //某個資料庫執行個體的寫鎖 }, "timeAcquiringMicros" : {//此操作為了獲得以下的鎖,而耗費等待的微秒時間 "R" : NumberLong(),//整個mongodb服務執行個體的全域讀鎖 "W" : NumberLong(),//整個mongodb服務執行個體的全域寫鎖 "r" : NumberLong(),//某個資料庫執行個體的讀鎖 "w" : NumberLong()//某個資料庫執行個體的寫鎖 } } }, ..... ] }
找到其中耗時secs_running很長的操作,有可能是異常操作,確認後可> db.killOp(opid)
MongoDB出現CPU飆高,如何強制停止正在執行的操作