MongoDB CPU使用率很高或者CPU使用率接近100%的问题,从而导致数据读写处理异常缓慢。
打开Mongo Shell
执行db.currentOp()命令,查看数据库当前正在执行的操作。
{
"desc" : "conn65208",
"threadId" : "44484",
"connectionId" : 65208,
"client" : "192.168.230.10:59299",
"active" : true,
"opid" : 166786238,
"secs_running" : 8020,
"microsecs_running" : NumberLong("8020020954"),
"op" : "getmore",
"ns" : "DataStoreServices.AirOriginalMin",
"query" : {
"getMore" : NumberLong("26548991769"),
"collection" : "AirOriginalMin"
},
"numYields" : 136711,
"locks" : {
"Global" : "r",
"Database" : "r",
"Collection" : "r"
},
"waitingForLock" : false,
"lockStats" : {
"Global" : {
"acquireCount" : {
"r" : NumberLong(273424)
}
},
"Database" : {
"acquireCount" : {
"r" : NumberLong(136712)
}
},
"Collection" : {
"acquireCount" : {
"r" : NumberLong(136712)
}
}
}
}
需要关注以下几个字段
字段 | 返回值说明 |
---|---|
client | 该请求是由哪个客户端发起的。 |
opid | 操作的唯一标识符。如果有需要,可以通过db.killOp(opid)直接终止该操作。 |
secs_running | 表示该操作已经执行的时间,单位为秒。如果该字段返回的值特别大,需要查看请求是否合理。 |
microsecs_running | 表示该操作已经执行的时间,单位为微秒。如果该字段返回的值特别大,需要查看请求是否合理。 |
ns | 该操作目标集合。 |
op | 表示操作的类型。通常是查询、插入、更新、删除中的一种。 |
locks | 跟锁相关的信息 |