0
0
0
0
博客/.../

tidb热点表问题分析报告

 TiDBer_tjdCkZ1O  发表于  2025-12-27

tidb热点表问题分析报告

一、背景:

1、 生产tidb集群正常情况下延迟平均在1秒以下,异常期间突增到2秒多,如下图所示。

2、 生产业务出现的Java 数据库连接池活动连接数告警。

 

二、故障分析:

1、 异常期间采样分析没有发现明显性能sql问题和数据库并发问题。

2、 没有发现硬件负载异常问题,不存在性能瓶颈。

3、 经过集群延迟异常期间的采样分析,生产tidb集群出现热点表(trajectory_push_success)问题,如下图所示:

4、 异常期间,出现读线程池cpu负载100%的情况(每台服务器2个kv节点,每个tikv节点分配15核)。

image.png

三、故障原因:

1、表象原因分析:扫描业务数据库的trajectory_push_success表在kv节点出现热点表问题,导致该节点的读线程池负载100%。因此该kv节点上的运单中台业务的表出现读取响应慢。

2、深层次原因分析:

trajectory_push_success表在该时间段读流量很高,该表存在读数据倾斜,且表为自增主键聚簇表,导致新数据分配主键时是按照顺序分配的,这样会导致某个kv节点上的数据过于集中,占用线程池资源。

四、解决方案:

1、修改trajectory_push_success表的主键将auto_increment 主键改为auto_random主键,这样会将新写入数据随机分配主键并打散分配到不同的kv节点,避免出现热点表问题。

2、对tidb集群的热点表做监控,针对每分钟出现大于1G写入的热点表进行监控告警。

3、形成tidb建表规范,对主键要求不高业务建立随机主键。

0
0
0
0

版权声明:本文为 TiDB 社区用户原创文章,遵循 CC BY-NC-SA 4.0 版权协议,转载请附上原文出处链接和本声明。

评论
暂无评论