Kafka控制拉取频率和请求超时时间

背景

当一次拉取接收数据过多时,会出现消费过慢超过默认超时时间,导致消费积压,消费者心跳过期,离开消费组从而失去该消费组消费数据的情况。

解决方案

  1. 减少单次拉取消息条数,增加最大拉取间隔时间。

消费者配置中,减少单次拉取消息条数max.poll.records,增加获取消息后提交偏移量的最大时间max.poll.interval.ms。

max.poll.records默认较大,容易产生消费积压导致超过设定的时间(默认5分钟),服务端会认为该消费者失效。

  1. 增加超时时间。

消费者配置中,增加超时时间session.timeout.ms。

session.timeout.ms是心跳检测时间,kafka消费者默认3秒发送一次心跳,若服务端在session.timeout.ms内未检测心跳,会认为该消费者失效。

  1. 调整发送心跳时间

消费者配置中,调整发送心跳时间heartbeat.interval.ms。

当使用 Kafka 的分组管理功能时,心跳到消费者协调器之间的预计时间。心跳用于确保消费者的会话保持活动状态,当有新消费者加入或离开组时方便重新平衡。该值必须比 session.timeout.ms 小,通常不高于1/3。它可以调整得更低,以控制正常重新平衡的预期时间。

控制拉取频率

消费者配置中,auto.commit.interval.ms属性控制拉取频率。

posted @ 2022-06-17 16:08  zjcfrancis  阅读(6872)  评论(0编辑  收藏  举报