一个好的问题描述有利于社区小伙伴更快帮你定位到问题,高效解决你的问题
【TiDB 使用环境】生产环境 /测试环境
【TiDB 版本】7.5.6
【部署方式】云上部署(什么云)/机器部署
【操作系统/CPU 架构/芯片详情】
【机器部署详情】CPU大小/内存大小/磁盘大小
【集群数据量】3pd 5 tidb 5 tikv
【集群节点数】
【问题复现路径】做过哪些操作出现的问题
【遇到的问题:问题现象及影响】
tidb节点CPU高,业务SQL没这么慢,不知道有什么可优化的
【资源配置】进入到 TiDB Dashboard -集群信息 (Cluster Info) -主机(Hosts) 截图此页面
【复制黏贴 ERROR 报错的日志】
【其他附件:截图/日志/监控】
kang
3
建议先看看TiDB节点的CPU到底花在哪儿了。可以执行 top -H -p <tidb_pid> 看线程级别CPU消耗,或者用 pprof 抓一下火焰图:
curl http://127.0.0.1:10080/debug/pprof/profile?seconds=30 > cpu.prof
go tool pprof -http=:8080 cpu.prof
常见原因:慢查询多、高并发短连接、或SQL未走索引导致大量数据扫描。
TiDB 节点 CPU 高多为计算未下压或解析/会话开销大。先在 Dashboard 的 Top SQL / 慢查询里按 CPU 排序定位热点,重点看是否有全表扫描、或复杂函数、类型不匹配导致算子留在 TiDB 层没下推到 TiKV。看 EXPLAIN ANALYZE 里 TiDB 侧的 HashAgg/Sort 是否吃 CPU,能否靠索引消除排序。其次看是否短连接风暴或大量 prepare 解析——连接数和 QPS 高但单条不慢,多是解析和会话开销,建议开 prepared statement 缓存、上连接池复用。最后确认统计信息是否准确,选错计划会放大计算量。
随缘天空
(Ti D Ber Ivw R7o Pj)
5
重点关注下top sql中的语句,这里的语句主要是消耗cpu资源的,另外,cpu资源消耗一般是分析语句或者大查询语句导致的,可能是没有谓词下推或者拉取的数据量过大,重点分析下执行计划。
TiDB 节点 CPU 高但业务 SQL 体感不慢,常见是内部任务或少量重计划/统计/GC 占满,而不一定是慢查询列表里那几条。
建议:
1)Dashboard → Top SQL / Continuity 看是哪些 SQL、是 Coprocessor 还是 TiDB 计算层。
2)对照监控:tidb_server_tokens、expensive_query、统计信息自动 ANALYZE、DDL。
3)确认是否个别 TiDB 实例承接了更多连接或重查询(负载不均)。
4)用 perf/top -H 看热点栈是解析、优化还是执行。
把 Top SQL 截图和该时段 QPS/连接数贴出来,可以进一步判断是该限流、加索引还是扩 TiDB。