xxxxxxxx
(Hacker Z Vu Xy Nh8)
2023 年11 月 17 日 07:28
1
tidb 6.1.7版本
问题:下游kafka限制了网络包大小为4MB,但是ticdc配置如下(一个任务是单个表),还是会触发【 Message was too large, server rejected it to avoid allocation error.】
“max-batch-size”: “4”, (官方文档表示这个参数不生效,默认值是16,但是即便是16,也不应该报错才对)
“max-message-bytes”: “262144”
“protocol” : “maxwell”
PS:kafka max-message限死4MB,无法修改,只能控制ticdc的配置。之前使用4.0.13版本遇到这个问题,官方建议升级,然后升级到4.0.16还是有问题,现在升级到6.1.7还是有问题,表示很崩溃啊。
这个配置项可以修改的啊,你的kafka里的配置呢?
config/server.properties 加上这些参数
#broker能接收消息的最大字节数
message.max.bytes=200000000
#broker可复制的消息的最大字节数
replica.fetch.max.bytes=204857600
#消费者端的可读取的最大消息
fetch.message.max.bytes=204857600
xxxxxxxx
(Hacker Z Vu Xy Nh8)
2023 年11 月 17 日 08:00
4
我的意思,kafka是别人的系统,不归dba管,dba只是用户端,服务端不支持变更配置,人家是统一管理配置的
数据就和水一样,流到下游水管变小了,你要么限流cdc流量,要么改大下游kafka接受的管子粗度
LingJin
(3AceShowHand)
2023 年11 月 17 日 09:31
9
使用的协议是 maxwell,该协议会对多个事件做 batch 操作。从源代码上看,max-batch-size 在该协议上是不生效的。maxwell 不是 TiCDC 官方 GA 的协议。
从给出的配置来看,max-message-bytes 给的值是 262144,即 256k。如果一次性 batch 的消息大小操过该值,就会发生 message too large 的做错。
即然你的下游 kafka 给的消息大小限制是 4MB,你完全可以不用管该参数啊,或者也给个 4MB 即可。
xxxxxxxx
(Hacker Z Vu Xy Nh8)
2023 年11 月 17 日 09:41
10
试过仅配置max-message-bytes=4MB的,但是也报错,所以现在都不知道要咋配置了
从诸多协议测试来看maxwell可读性比较好,所以最终敲定这个协议,那官方GA的协议是哪个呢,建议使用哪个协议呢,针对这种下游kafka限死4MB的场景,在该协议下,ticdc端的参数又怎么配置呢
xxxxxxxx
(Hacker Z Vu Xy Nh8)
2023 年11 月 17 日 10:29
12
好嘞,那这个是有版本限制吗。是否适用于4.0.13版本或者4.0.16版本?
现在我们是测试阶段,如果canal-json在4.0.13版本也生效,那我们就可以先不用升级了