# [FAQ] region 数量过多导致 TiCDC 同步延迟

## Key Words

region 数量过多，resolved ts 事件过多，TiCDC CPU 高，TiCDC 同步延迟

## Description

单个大表约有 20万 region，随着写入流量的增加，TiCDC 经常出现 changefeed 同步延迟。

## Root Cause

region 数量过多导致 TiCDC 主要 CPU 都消耗在调度和处理 resolved ts 上。

## Diagnostic Steps

1. TiCDC 监控 Dataflow - Puller output events/s 观察到 Puller 每秒处理超过 20万 resolved ts 事件，TiCDC CPU 使用率很高。

2. 收集 CPU profile 和 trace，从 CPU profile 看到主要开销是 resolvedts 处理和大量 gorotine 切换，如下图所示 handleResolvedTs 占比 8.8% + runtime.schedule 占比超过一半。

```shell
curl -s http://cdc-ip:8300/debug/pprof/profile?seconds=60 > ./cpu.out
curl -s http://cdc-ip:8300/debug/pprof/trace?seconds=60 > ./cpu-trace.out
```

![faq-ticdc-large-regions-latency](/images/TiCDC/faq-ticdc-large-regions-latency.png)

## Workaround

将 TiKV 配置 cdc.min-ts-interval 调整为 2s。调整后 TiCDC CPU 有明显下降从 2000%+下降到 1000%，Changefeed resolvedts lag 降到 0，Puller 每秒处理的 resolved ts 事件减半，经过一段时间追增量数据，同步延迟开始下降并最终消失。

```sql
set config tikv `cdc.min-ts-interval` ='2s';
```

## Affected Versions

ALL