实例CPU使用率高问题排查 本节主要介绍实例CPU使用率高问题排查 使用文档数据库服务时,如果您的CPU使用率达到80%,则认为CPU存在瓶颈。此时,会导致数据读写处理缓慢,从而影响业务正常运行。 本章节帮助您分析数据库正在执行的请求和数据库慢请求,经过分析优化后,使得数据库的查询相对合理,所有的请求都高效使用了索引,从而排查文档数据库服务CPU使用率高的问题。 分析DDS数据库正在执行的请求 1. 通过Mongo Shell连接DDS实例。 开通公网访问的实例,具体请参见: 通过公网连接集群实例 通过公网连接副本集实例 未开通公网访问的实例,具体请参见: 通过内网连接集群实例 通过内网连接副本集实例 2. 执行以下命令,查看数据库当前正在执行的操作。 db.currentOp() 回显如下: { "raw" : { "shard0001" : { "inprog" : [ { "desc" : "StatisticsCollector", "threadId" : "140323686905600", "active" : true, "opid" : 9037713, "op" : "none", "ns" : "", "query" : { }, "numYields" : 0, "locks" : { }, "waitingForLock" : false, "lockStats" : { } }, { "desc" : "conn2607", "threadId" : "140323415066368", "connectionId" : 2607, "client" : "172.16.36.87:37804", "appName" : "MongoDB Shell", "active" : true, "opid" : 9039588, "secsrunning" : 0, "microsecsrunning" : NumberLong(63), "op" : "command", "ns" : "admin.", "query" : { "currentOp" : 1 }, "numYields" : 0, "locks" : { }, "waitingForLock" : false, "lockStats" : { } } ], "ok" : 1 }, ... } 说明 client:发起请求的客户端。 opid:操作的唯一标识符。 secsrunning:该操作已经执行的时间,单位:秒。如果该字段返回的值特别大,需要查看请求是否合理。 microsecsrunning:该操作已经执行的时间,单位:微秒。如果该字段返回的值特别大,需要查看请求是否合理。 op:操作类型。通常是query、insert、update、delete、command中的一种。 ns:操作目标集合。 其他参数详见db.currentOp()命令 3. 根据命令执行结果,分析是否有异常耗时的请求正在执行。 如果业务日常运行的CPU使用率不高,由于执行某一操作使得CPU使用率过高,导致业务运行缓慢,该场景下,您需要关注执行耗时久的请求。 如果发现异常请求,您可以找到该请求对应的opid,执行 db.killOp(opid) 命令终止该请求。