cdc to kafka: error encoding packet: invalid request size

  1. 出现问题无法跳过,只能跳tso
  2. open-protocol 协议 kafka最大消息设置的250M topic 15分区 3副本 , 使用表名作为分区键
    case-sensitive=false
    enable-old-value=false
    rules就监控了1张表
    另外还开启了 large-message-handle-option=“handle-key-only” 也没用
  3. schema没什么特殊的,里面就一个longtext字段,其他字段都很小。 至于要定位哪条数据估计有困难,晚点在开发环境测试下,最大能支持多大。

目前cdc出错,错误信息里看不出表信息,更看不到是哪条记录了, 这个建议改进下

“invalid request size” 这个错误应该是从这里返回的 :
https://github.com/IBM/sarama/blob/25c9c1a880e385781e1a39b49f8e7239e3d5e729/encoder_decoder.go#L35
MaxRequestSize 最大是 100MiB:
https://github.com/IBM/sarama/blob/25c9c1a880e385781e1a39b49f8e7239e3d5e729/sarama.go#L106

确实消息大小超过了限制

1 个赞

看起来又是一个写死的参数

https://docs.pingcap.com/zh/tidb/v7.1/ticdc-faq#ticdc-把数据同步到-kafka-时能在-tidb-中控制单条消息大小的上限吗

max-message-bytes 默认应该是 10MB。所以可能是有的消息本身超过了 100MB。可以通过看 TiCDC 日志,是否存在 Single message is too large for open-protocol 这样的日志

max-message-bytes 这个我设置的200M

“max-message-bytes 这个我设置的200M”
不能怎么设置呀,已经超过了 sarama(kafka 客户端)的硬限制了

1 个赞

果然和猜测的一样了 :rofl:

只有大小超过 max-message-bytes large-message-handle-option=“handle-key-only” 才会起作用,所以可以考虑把 max-message-bytes 改成一个小于 100MB 的值,这样对于超过 100MB 的值就会只发送 handle key 的数据。

1 个赞

正解,经测试确定有效

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