云数据库 GEMINIDB-GeminiDB Mongo实例CPU使用率高问题排查:分析GeminiDB Mongo数据库正在执行的请求

时间:2023-12-28 09:37:34

分析GeminiDB Mongo数据库正在执行的请求

  1. 通过Mongo Shell连接GeminiDB Mongo实例。
  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" : "xxx.xxx.xxx.xxx:xxx",
                                            "appName" : "MongoDB Shell",
                                            "active" : true,
                                            "opid" : 9039588,
                                            "secs_running" : 0,
                                            "microsecs_running" : NumberLong(63),
                                            "op" : "command",
                                            "ns" : "admin.",
                                            "query" : {
                                                    "currentOp" : 1
                                       },
                                            "numYields" : 0,
                                            "locks" : {
     
                                            },
                                            "waitingForLock" : false,
                                            "lockStats" : {
     
                                            }
                                    }
                            ],
                            "ok" : 1
                    },
        ...
    }
    • client:发起请求的客户端。
    • opid:操作的唯一标识符。
    • secs_running:该操作已经执行的时间,单位:秒。如果该字段返回的值特别大,需要查看请求是否合理。
    • microsecs_running:该操作已经执行的时间,单位:微秒。如果该字段返回的值特别大,需要查看请求是否合理。
    • op:操作类型。通常是query、insert、update、delete、command中的一种。
    • ns:操作目标集合。

    其他参数详见db.currentOp()命令官方文档

  3. 根据命令执行结果,分析是否有异常耗时的请求正在执行。

    如果业务日常运行的CPU使用率不高,由于执行某一操作使得CPU使用率过高,导致业务运行缓慢,该场景下,您需要关注执行耗时久的请求。

    如果发现异常请求,您可以找到该请求对应的opid,执行db.killOp(opid)命令终止该请求。

support.huaweicloud.com/mongoug-nosql/mongo_faq_0301.html