MongoDB CPU使用率高原因说明

参考:https://help.aliyun.com/document_detail/62224.html

MongoDB CPU使用率高的可能原因:

  • 全表扫描
    • 如果这种请求比较频繁,建议对查询的字段建立索引的方式来优化。
  • 未使用索引或索引不合理
    • 如果索引建立的不太合理,或者是匹配的结果很多。这样即使使用索引,请求开销也不会优化很多,执行的速度也会很慢。
  • 大量数据排序
  • 服务器能力达到上限
    • 整个数据库的查询非常合理,所有的请求都是高效的走了索引,基本没有优化的空间了,就是机器的服务能力已经达到上限了,应该升级配置了
  • 服务器被攻击
    • 通过分析端口连接数,来源IP,日志确认来源IP的访问内容

查看数据库当前正在执行的操作:

> db.currentOP()

该命令的输出示例如下:

{
        "desc" : "conn632530",
        "threadId" : "140298196924160",
        "connectionId" : 632530,
        "client" : "11.192.159.236:57052",
        "active" : true,
        "opid" : 1008837885,
        "secs_running" : 0,
        "microsecs_running" : NumberLong(70),
        "op" : "update",
        "ns" : "mygame.players",
        "query" : {
            "uid" : NumberLong(31577677)
        },
        "numYields" : 0,
        "locks" : {
            "Global" : "w",
            "Database" : "w",
            "Collection" : "w"
        },
        ....
    },

您需要重点关注以下几个字段:

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

查看数据库连接数:

> db.serverStatus().connections;
{
	"current" : 70,
	"available" : 51130,
	"totalCreated" : 17234652,
	"active" : 9
}
posted @ 2021-09-11 08:59  Varden  阅读(617)  评论(0编辑  收藏  举报