tencent cloud

TDSQL-C MySQL 版

动态与公告
产品动态
产品公告
新手指引
产品简介
产品概述
产品优势
应用场景
产品架构
产品规格
实例类型
产品功能列表
数据库版本
地域和可用区
常用概念
使用限制
使用规范建议
自研内核
内核概述
内核版本更新动态
内核优化版本
功能类特性
性能类特性
安全类特性
稳定性特性
分析引擎特性
内核问题检查与修复
购买指南
计费概述
产品价格
创建集群
变配说明
续费说明
欠费说明
退费说明
按量转包年包月
按量转 Serverless
增值服务计费说明
查看费用账单
快速入门
数据库审计
简介
查看审计实例列表
开通审计服务
查看审计日志
日志投递
配置事后告警
修改审计规则
修改审计服务
关闭审计服务
审计规则模板
查看审计任务
授权子用户使用数据库审计
Serverless 服务
Serverless 简介
创建和管理 Serverless 版集群
弹性管理工具
Serverless 资源包
多可用区部署
配置变更
常见问题
Serverless 成本预估器
操作指南
操作总览
控制台切换集群页面视图
数据库连接
实例管理
配置变更
实例形态管理
集群管理
只读实例管理
数据库代理
账号管理
数据库管理
数据库管理工具(DMC)
参数配置
多可用区部署
全球数据库
备份与恢复
操作日志
迁移数据
并行查询
列存索引 CSI
分析引擎
数据库安全和加密
监控与告警
SQL 基本操作
使用 SCF 连接 TDSQL-C MySQL 版
标签
实践教程
TDSQL-C MySQL 版数据库审计等保实践
通过 DTS 升级数据库版本 MySQL5.7至8.0
TDSQL-C MySQL 版使用规范
新版本控制台
数据库代理多连接地址实现多 RO 组
数据库代理的优势
如何选择存储空间计费模式
通过 DTS 构建异地灾备
为集群创建 VPC
如何进行数据恢复
如何解决 CPU 使用率高的问题
如何授权子用户查看监控
白皮书
安全白皮书
性能白皮书
故障处理
连接相关
性能相关
API 文档
History
Introduction
API Category
Making API Requests
Instance APIs
Multi-Availability Zone APIs
Other APIs
Audit APIs
Database Proxy APIs
Backup and Recovery APIs
Parameter Management APIs
Billing APIs
serverless APIs
Resource Package APIs
Account APIs
Performance Analysis APIs
Data Types
Error Codes
常见问题
基础概念
购买与计费
兼容与格式
连接与网络
功能特性
控制台操作
数据库表
性能与日志
数据库审计
TDSQL-C MySQL 版和云数据库 MySQL 有什么区别
相关协议
服务等级协议
服务条款
TDSQL-C 政策
隐私政策
数据处理和安全协议
通用参考
标准与认证
词汇表
联系我们

CPU 利用率过高

PDF
聚焦模式
字号
最后更新时间: 2025-10-15 20:32:04

现象描述

TDSQL-C MySQL 版出现响应变慢、无法获取连接、超时等现象。当 TDSQL-C MySQL 版 CPU 利用率超过80%时,可能会出现业务响应变慢、超时、无法连接数据库等现象。
TDSQL-C MySQL 版 CPU 使用情况,可在 TDSQL-C MySQL 版控制台 集群的监控告警页面或数据库智能管家 DBbrain 控制台 查看。
说明:
CPU 利用率过高时,若 CPU 和内存都需要扩容,建议进行 调整计算配置调整存储空间,提升实例规格以确保业务正常运行,后续可参考本文进行排查和优化。

故障风险

若 TDSQL-C MySQL 版 CPU 的利用率长时间处于过高状态,会严重影响数据库的整体性能,极端情况下可能会出现实例 HANG 住的情况。
当 HA 探测到实例 HANG 后,为了保证用户业务的高可用性,会触发主备切换,在主备切换的过程中,业务会出现短时间的不可用,实例不可用的时长正常情况下不超过60秒。如在业务高峰期发生了主备切换,会严重影响业务的稳定和连续性。
为避免业务因 CPU 资源不足而受影响,建议提前对 CPU 利用率过高的实例进行业务优化或者升级 CPU 资源。实例发生主备切换时会出现秒级的闪断,对于长连接需要应用具备重连的机制。

可能原因

TDSQL-C MySQL 版主要是两类线程占用 CPU:系统线程和用户线程。因此 TDSQL-C MySQL 版独占的云服务器上,仅需关注这两类线程的情况,就能解决大部分的故障场景。

用户线程

用户线程繁忙,大部分场景都是由“慢查询”引起的,除“慢查询”因素外,还有“计算量大”和“高 QPS”因素。
慢查询 进行长时间的计算,例如:order by,group by,临时表,join 等。这一类问题是查询效率不高,导致单个 SQL 语句长时间占用 CPU 时间。
计算量大 单纯的数据量比较多,导致计算量巨大。
高 QPS(Queries Per Second ) 单纯的 QPS 压力高,所以 CPU 的时间被用满了,如:4 核的服务器用来支撑 20k 到 30k 的点查询,每个 SQL 占用的 CPU 时间并不多,但是因为整体的 QPS 很高,所以 CPU 的时间被占满了。

系统线程

在实际的环境中,系统线程遇到问题的情况会比较少,一般来说,多个系统线程很少会同时跑满,只要云服务器的可用核心数大于等于 4 ,一般也不会遇到 CPU 利用率过高,当然有一些 bug 可能会有影响,如下图所示:


解决思路

大部分故障场景,基本是用户线程繁忙导致,因此本文主要介绍用户线程导致的 CPU 利用率过高问题,提供对应的解决方案。
慢查询:建议使用 DBbrain 来排查和优化,详情请参见 慢查询
计算量大:因处理数据量大,导致 CPU 利用率过高,处理措施详情请参见 计算量大
高 QPS:因访问量过大,导致 CPU 利用率过高,处理措施详情参见 高 QPS

处理步骤

慢查询

导致 CPU 利用率过高的异常 SQL 语句,可以使用数据库智能管家 DBbrain 来排查和优化:
异常诊断(推荐):7 * 24小时异常发现诊断,提供实时优化建议。操作详情请参见 使用“异常诊断”功能排查数据库异常情况
慢 SQL 分析:针对当前实例出现的慢 SQL 进行分析,并给出慢 SQL 的优化建议。操作详情请参见 使用“慢 SQL 分析”功能排查导致 CPU 利用率过高的 SQL
审计日志分析:利用云数据库审计数据(全量 SQL),多维度深入分析 SQL 语句并给出优化建议。操作详情请参见 使用“审计日志分析”功能排查导致 CPU 利用率过高的 SQL
TDSQL-C MySQL 版慢查询时间(long_query_time)的默认值是1s,在遇到性能问题时,若发现没有慢查询,建议将参数值调小,再观察业务周期内的慢查询,进而对其慢查询进行优化。若参数调整后,在其业务周期内依然未发现慢查询,而 CPU 利用率依然偏高,建议升级 CPU 的配置,进而提高数据库的整体性能。

计算量大

若数据量比较大,即使索引和执行计划没什么问题,也会导致 CPU 利用率过高,而且结合 MySQL one-thread-per-connection 的特性,并不需要太多的并发就能把 CPU 使用率跑满。
一般来讲,这类问题有如下两种比较常规的解决方案:
读写分离,把这一类查询放到平时业务不怎么用的只读从库去。
在程序段拆分 SQL,把单个大查询拆分成多个小查询。

高 QPS

升级 CPU 的配置,进而提高数据库的整体性能。
挂载只读实例,分担读写实例的压力。
优化查询语句,提升执行效率。

帮助和支持

本页内容是否解决了您的问题?

填写满意度调查问卷,共创更好文档体验。

文档反馈