问题现象
mq发送延迟,最大延迟达到了1小时
问题排查
查看grafana监控图表,发现高峰时的TPS大概为1500,平时的TPS最高也只有700,1500堆积完成后TPS直线下降,可以初步判断是canal有消息堆积。

然后查看延迟监控,发现高峰时期有一小时多的延迟

所以判断是canal的延迟,而不是消费者的堆积。
解决方案
修改canal.mq.canalBatchSize的大小
canal.mq.canalBatchSize 是 Canal 配置中的一个参数,每次批量获取数据的最大条目数,默认30,可用于控制Canal向消息队列(如Kafka、RocketMQ等)中批量发送数据的数量,推荐设置是10到1000不等,可以根据自己的业务量设置大小,比如我的设置的3000。
当你修改 canal.mq.canalBatchSize 参数时,你会影响 Canal 向消息队列发送数据的批处理大小。增加 canalBatchSize 的值意味着 Canal 会一次性发送更多的数据到消息队列。这通常可以提高吞吐量,减少发送消息的次数,从而可能降低网络开销和消息队列的写入压力。
文章讨论了在MQ发送中遇到的1小时延迟问题,通过监控发现是Canal的消息堆积。解决方案是调整Canal配置中的canal.mq.canalBatchSize参数以控制批量发送数据量,以缓解写入压力和网络开销。
1581





