TiCDC性能问题

【 TiDB 使用环境】
版本: tidb 4.0.11 ticdc 4.011

【概述】
通过CDC组件同步表到RDS,平时每分钟A表往TiDB写入量大概在1-2万左右。昨天由于刷数据,每分钟写入量大概在8-9万,偶尔十多万。

然后同步延迟了,积压了100-200万左右的数据。导致CDC节点OOM。
通过排查由于数据积压导致未能及时同步到RDS,A表往RDS写入速度大概在3-4万左右。

积压数据过多,所有同步任务都无法正常启动,全部阻塞。呈监控图:

这边大概有200多个左右的同步任务,为了不影响其他同步任务只能删除A表同步任务(删除前记录当前同步任务的checkpoint-ts)。然后通过drainer来同步A表的积压数据,这样就不会OOM了。

drainer

最开始drainer同步分钟写入速度大概在2-3万左右, 通过调整配置参数后每分钟写入速度能达到7-8万,偶尔能到12万+。

优化前:
txn-batch = 200
worker-count = 16
safe-mode = true

最终配置参数:
detect-interval = 10
addr = “172.16.72.18:4410”
pd-urls = “http://172.16.72.18:2379
initial-commit-ts = 426338054792807388
log-file = “rds.log”
[syncer]
txn-batch = 800
worker-count = 64
disable-dispatch = false
safe-mode = false
db-type = “mysql”
ignore-txn-commit-ts = []
[[syncer.replicate-do-table]]
db-name = “search_sync_risk”
tbl-name = “case_search_sync_v3”

[syncer.to]
host = 
user = 
password = 
port = 3306
[syncer.to.checkpoint]
schema = "tidb_qcc_checkpoint_aliyun"
type = "mysql"
host = 
user = "******"
password = "******"
port = 4000

【问题】

当前表每行大小约10-50KB左右。

目前CDC往阿里云写入速度每分钟最多3-4万,drainer写入能到10万+。

正常来讲CDC同步写入速度应该比drainer快才对,当前却是CDC慢了好几倍。下面是创建同步任务的命令和配置:

cdc cli changefeed create --start-ts=426337841460019555 \
--sink-uri="mysql://aliyun-user:pwd@aliyun:3306/?worker-count=64&max-txn-row=800" \
--changefeed-id="1-searchsync-casesearchsyncv3-t5cdc5" \
--config=/data/cdc_file/case_search_sync_v3.toml

/data/cdc_file/case_search_sync_v3.toml

case-sensitive = true
enable-old-value = false

[filter]
rules = ['search_sync_risk.case_search_sync_v3'] 

[mounter]
worker-num = 16

[sink]
protocol = "default"

[cyclic-replication]
enable = false
sync-ddl = true

CDC测试结果:

DELETE串行执行
UPDATE并行执行
REPLACE INTO 目标没有数据则变成 INSERT
REPLACE INTO 目标有数据则变成 UPDATE

这边的写入语句大多数都是UPDATE,是哪里不对导致的CDC同步这么慢?

  1. 配置不对
  2. 同步任务过多
  3. 只能达到这个同步速度
1 Like

咱们是也配置 pump/drainer 的同时也配置 cdc 了?

是的,全都有

这个方便,提供一下 cdc 和 binlog 的监控不(对应时间内),可以参考这个帖子:https://asktug.com/t/topic/37248,咱们这个看都是默认配置,最好的办法是通过监控来分析了

qcc-tidb-cluster-Binlog_2021-07-16T08_01_37.598Z.rar (313.6 KB)

qcc-tidb-cluster-TiCDC_2021-07-16T07_58_09.154Z.rar (2.3 MB)

:stuck_out_tongue_winking_eye:不好意思,能提供原文不,你的压缩是 windows 的,我电脑没下载相关工具

cdc的原文监控3个小时大概有17MB,上传不了。

不用了,下载工具了

忘记回复了,你的监控,是有异常时候的 监控吧(cdc 节点的资源使用很高,而且cdc 应该是在补充以前的数据,我的意思是:非正常同步时的监控吧)

是的,
11点多的时候CDC OOM。拉不起来。
然后切换为 drainer 同步积压数据。

正常 cdc 是 比 binlog 快的,但是 CDC 有“增量”和“类似全量”两种方式,来同步上游数据库的 事物,所以在延迟/网络 等异常之后,会占有较多资源(这个cdc 在后续版本在不断优化中,建议你试一下高版本)

1 Like

此话题已在最后回复的 1 分钟后被自动关闭。不再允许新回复。