写点什么

drainer 同步到 tidb 延迟问题记录

  • 2024-12-13
    北京
  • 本文字数:521 字

    阅读完需:约 2 分钟

作者: 春风十里不如你原文来源:https://tidb.net/blog/ef12fc0d

问题现象

1、drainer worker3 queue size 高。



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



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

问题排查

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



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
复制代码



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


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



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

问题结论

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


发布于: 刚刚阅读数: 3
用户头像

TiDB 社区官网:https://tidb.net/ 2021-12-15 加入

TiDB 社区干货传送门是由 TiDB 社区中布道师组委会自发组织的 TiDB 社区优质内容对外宣布的栏目,旨在加深 TiDBer 之间的交流和学习。一起构建有爱、互助、共创共建的 TiDB 社区 https://tidb.net/

评论

发布
暂无评论
drainer同步到tidb延迟问题记录_集群管理_TiDB 社区干货传送门_InfoQ写作社区