问题描述
原因分析及解决方法
序号 | 可能原因 | 原因分析 | 排查方法 | 解决方法 |
1 | 频繁建立短连接 | 实例大量资源消耗在处理频繁短连接上,引起 CPU 使用率较高,连接数较高,然而 QPS(集群每秒访问次数)未达到预期。 | ||
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 规格不足。 | 调整实例配置规格。 Mongod 节点:提升Mongod 的 CPU 与内存配置。具体信息,请参见 变更 Mongod 节点配置规格。 Mongos 节点:如果 Mongos 达到瓶颈,请提升 Mongos 的节点规格,或增加 Mongos 数量。具体操作,请参见 变更 Mongos 节点配置规格 与 新增 Mongos 节点 。 |