CDC:ErrFlowControllerEventLargerThanQuota 错误

Bug 反馈

CDC日志突然出现以下错误,然后时间就不再往前推进,CPU变的很高。

[ERROR] [processor.go:158] [“run processor failed”] [changefeed=cdc-20210816-1] [capture=192.168.205.158:8300] [error="[CDC:ErrFlowControllerEventLargerThanQuota]event is larger than the total memory quota, size: 36666380, quota: 20971520"]

请问这个是什么原因?如何解决?

2 个赞

复现的路径可以提供一下吗?

2 个赞

不知道如何复现,突然之间就这样了,近期已发生过两次,删了ChangeFeed后,重建才好的。

2 个赞

@qizheng 老师帮忙看看~

2 个赞

是不是修改 cdc下的per-table-memory-quota ?

2 个赞

同步的数据需要更多的内存,调整下参数了

event is larger than the total memory quota, size: 36666380, quota: 20971520

你得预估下,后面CDC同步数据的规模,按规模配置个内存,不然还得报错的

2 个赞
  1. 是调整per-table-memory-quota这个参数么?
  2. 如何预估,能说一下估算的方法么?
2 个赞

这不对啊,官方推荐的内存肯定是够的…

2 个赞

分析了v5.1.1官方源码,就是per-table-memory-quota这个参数限制,但这个参数是写死的(20MB)。

2 个赞

再次研究了ticdc的源码,发现这个内存限制,是通过单个消息的(key+value+oldvalue)的总长度来检查的,由于默认value的长度是6MB,所以20MB,理论上是安全的。但由于我们使用特殊,把value的限制提高了,从而导致理论长度会大于20MB,从而导致了错误。

现在,我们只能暂时通过自己修改TICDC的源码来解决,希望官方今后能够把修改该参数的功能反应到新版本中。

3 个赞

我反馈到需求区吧,后续要求提供配置参数来解决这个问题,不过相应的内存的要求也会有变化

以后可以跟进一下

2 个赞

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