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 | 跟锁相关的信息 |
当MongoDB的CPU使用率达到100%时,可能导致数据读写性能下降。通过MongoShell执行db.currentOp()命令可以检查当前操作。关注client、opid、secs_running和microsecs_running等字段,识别长时间运行的getmore操作。高CPU使用可能由长时间查询引起,需优化查询效率或调整数据库设置来解决。
1081

被折叠的 条评论
为什么被折叠?



