0
0
0
0
专栏/.../

drainer同步到tidb延迟问题记录

 春风十里不如你  发表于  2024-12-09

问题现象

1、drainer worker3 queue size高。

image.png

2、数据同步到下游tidb延迟。

image.png

3、drainer日志正常推进,但是savepoint有延迟

问题排查

1、检查大事务,未发现有写入量大的事务。

image.png

2、检查下游集群状态

下游tidb集群状态正常,集群没有负载,通过select * from information_schema.cluster_processlist where info is not null;执行多次,只抓到一次正在执行的sql,检查从集群的慢SQL,也没有任何记录,说明从集群是没有任何问题的,那么问题就是卡在drainer。

3、抓取drainer debug分析

curl http://drainer_ip:8249/debug/pprof/profile?seconds=30 > debug.info

image.png

 sample 只有 90ms,是 profile 30s 的 0.3%,所以cpu是很空闲的。

4、检查是否有大量的小事务

image.png

发现在问题时间有大量的小事务在执行,通过select * from information_schema.cluster_processlist where info is not null;多次抓取发现都是同一张表的update

问题结论

worker_N 的 N 是由 crc32(all unique keys) % worker_count计算,并且如果SQL有因果关系会分发到一个worker上执行。而更新同一张表是有因果关系的,只能分发给同一个worker进行,所以需要尽量避免大量的单表更新。

0
0
0
0

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

评论
暂无评论