tencent cloud

文档反馈

CPU 使用率偏高解决方法

最后更新时间:2024-01-12 10:47:36

    问题描述

    日常运维,登录 MongoDB 控制台,单击实例 ID 进入实例详情页面,选择系统监控页签,检查实例的监控指标详情,发现数据库 CPU 监控类 指标明显持续偏高。

    原因分析及解决方法

    序号
    可能原因
    原因分析
    排查方法
    解决方法
    1
    频繁建立短连接
    
    实例大量资源消耗在处理频繁短连接上,引起 CPU 使用率较高,连接数较高,然而 QPS(集群每秒访问次数)未达到预期。
    借助数据库智能管家 DBbrain 的诊断优化功能,分析数据库实例的实时会话统计视图及数据,确认是否存在连接数突增的现象。具体查询方式,请参见 实时会话
    将短连接调整为长连接,不同语言类型的更多参数信息,请参见 MongoDB 官网
    2
    业务侧存在较多非预期的请求耗时较长
    非预想的请求较多,或者被恶意请求,可能会导致 CPU 资源过度浪费。
    请借助数据库智能管家(TencentDB for DBbrain,DBbrain)的诊断优化功能,在实时会话页面,排查业务侧所有连接的客户端请求,是否为业务实际真实所需。
    对于非预期的请求,可在数据库智能管家 (TencentDB for DBbrain,DBbrain)的 诊断优化中,在实时会话页面,直接进行 Kill 操作,进行清理。具体操作,请参见 实时会话
    数据库智能管家(TencentDB for DBbrain,DBbrain)的诊断优化中,在SQL 限流页面,创建 SQL 限流任务,自主设置 SQL 类型、最大并发数、限流时间、SQL 关键词,来控制数据库的请求访问量和 SQL 并发量,从而达到服务的可用性。具体操作及应用案例,请参见 SQL限流
    3
    存在高复杂的请求
    
    高复杂的请求,可能因为如下原因导致 CPU 资源过度消耗。
    排序操作:在查询过程中进行排序,本身将消耗较大 CPU资源。
    全表扫描:若数据库没有使用索引,请求将可能进行全表扫描,对 CPU 和 IO 资源造成较大的压力,从而导致性能下降。
    不合理的索引:可能会因为覆盖的字段不足,索引字段的顺序不合理,而导致大量的物理读和逻辑读,占有较多 CPU 资源
    高复杂的查询请求,通常比较耗时,会相应产生慢日志。可借助数据库智能管家 DBbrain 的诊断优化功能进行慢日志分析,在慢日志信息列表中,查看是否存在相关的关键字。具体操作,请参见 慢 SQL 分析
    排序相关关键字:Sort、hasSortStage 等。
    全表扫描关键字
    COLLSCAN:说明该查询进行了全表扫描。
    docsExamined:代表文档扫描条目。docsExamined 值越大,扫描的文档条目就越多,消耗 CPU 资源越多。
    不合理索引关键字
    IXSCAN:代表进行了索引扫描。
    keysExamined:指明索引扫描条目。keysExamined 值越大,扫描的条目就越多,消耗CPU资源越多。
    针对慢查询,请进行索引优化。
    可借助数据库智能管家(TencentDB for DBbrain,DBbrain)索引推荐 ,选择最优的索引。
    请参见最佳实践 索引优化解决读写性能瓶颈,提升数据库性能。
    4
    5
    6
    业务上涨,资源不足
    业务量上涨,数据规模增长,当前实例的 CPU 规格不足。
    登录 MongoDB 控制台,单击实例 ID 进入实例详情页面,选择系统监控页签,查看实例总请求指标 QPS,查看节点每秒被请求的次数是否明显偏高。
    
    调整实例配置规格。
    Mongod 节点:提升Mongod 的 CPU 与内存配置。具体信息,请参见 变更 Mongod 节点配置规格
    Mongos 节点:如果 Mongos 达到瓶颈,请提升 Mongos 的节点规格,或增加 Mongos 数量。具体操作,请参见 变更 Mongos 节点配置规格新增 Mongos 节点
    
    联系我们

    联系我们,为您的业务提供专属服务。

    技术支持

    如果你想寻求进一步的帮助,通过工单与我们进行联络。我们提供7x24的工单服务。

    7x24 电话支持