项目场景:

项目中,使用到了kafka作为消息中间件,项目作为消费端,消费消息并进行业务处理


问题描述

在实际应用的过程中,发现偶尔但是一直存在的,有消费数据报:org.apache.kafka.clients.consumer.CommitFailedException: Commit cannot be completed since the group has already rebalanced and assigned the partitions to another member. This means that the time between subsequent calls to poll() was longer than the configured max.poll.interval.ms, which typically implies that the poll loop is spending too much time message processing. You can address this either by increasing the session timeout or by reducing the maximum size of batches returned in poll() with max.poll.records.异常


原因分析:

  • 首先根据报错提示,可能是max.poll.records参数和 max.poll.interval.ms参数配置问题
  • 其次报错信息中提到消费者组正在发生重平衡导致

因此围绕这两道进行了大致分析:

  • 参数配置没啥可说的,调整一下默认参数即可,这里没啥可说的
  • 主要分析一下可能触发kafka重平衡的原因

重平衡

经过一番度娘,可能触发重平衡的原因如下:

  1. 主题的分区数发生变更,kafka目前只支持增加分区,当增加的时候就会触发重平衡
  2. 订阅的主题发生变化,当消费者组使用正则表达式订阅主题,而恰好又新建了对应的主题,就会触发重平衡
  3. 消费者组内成员发生变更,这个变更包括了增加和减少消费者。注意这里的减少有很大的可能是被动的,就是某个消费者崩溃退出了

首先考虑到前两种情况,出现的可能性都比较低,并且都是偶发性的,排除,因此主要针对第三点进行排查。实际排查过程中,是先修改了上面两个参数,发现错误并没有消失,因此在本地进行了错误模拟(业务处理部分直接sleep()),具体过程就不再赘述了,最终发现,本地消费者集群并且多线程消费时,当其中一个节点的某个消费者线程消费超时,会导致被剔除出消费者组,触发kafka的重平衡,此时同节点的其他消费线程和其他节点的消费者,正在消费的则有会报上面的异常,由此想到可能还是max.poll.interval.ms参数配置过小,然后对比线上日志,发现报错的消息,业务处理时长长达19分钟…


解决方案:

1、先将max.poll.interval.ms参数配置到大于19分钟,以避免线上继续出现问题
2、优化消费信息的业务处理逻辑,使之耗时不至于过长
3、最后再酌情配置max.poll.interval.ms参数

【记一次kafka报org.apache.kafka.clients.consumer.CommitFailedException异常处理】相关推荐

  1. 【Flink实战系列】Lorg/apache/flink/kafka/shaded/org/apache/kafka/clients/consumer/ConsumerRecord;)Ljava/

    java.lang.AbstractMethodError: Method flink/stream/deserialization/PoJoDeserializationSchema.deseria ...

  2. kafka 报错:kafka server:Message was too large ,server rejected it to avoid allocation

    kafka报错信息: kafka server:Message was too large ,server rejected it to avoid allocation  kafka版本: kafk ...

  3. flink报错ByteArraySerializer is not an instance of org.apache.kafka.common.serialization.Serializer

    文章目录 问题描述 报错信息 问题解决 方式一: 方式二: 问题描述 代码如下: public class Sink_KafkaSink_1{public static void main(Strin ...

  4. Flink读取Kafka报错:KafkaException ByteArrayDeserializer is not an instance Deserializer

    1.视界 2.背景 做flink读取kafka报错 org.apache.kafka.common.KafkaException: Failed to construct kafka consumer ...

  5. kafka --org.apache.kafka.common.config.ConfigException: No resolvable bootstrap urls given in bootst

    报错内容: Exception in thread "main" org.apache.kafka.common.KafkaException: Failed to constru ...

  6. kafka grpc_模型服务:流处理与使用Java,gRPC,Apache Kafka,TensorFlow的RPC / REST

    kafka grpc 机器学习/深度学习模型可以通过不同的方式进行预测. 我的首选方法是将分析模型直接部署到流处理应用程序(如Kafka Streams或KSQL )中. 您可以例如使用TensorF ...

  7. 模型服务:流处理与使用Java,gRPC,Apache Kafka,TensorFlow的RPC / REST

    机器学习/深度学习模型可以通过不同的方式进行预测. 我的首选方法是将分析模型直接部署到流处理应用程序(如Kafka Streams或KSQL )中. 您可以例如使用TensorFlow for Jav ...

  8. Spring Apache Kafka教程

    在本SpringApache Kafka课程中,我们将学习如何在Spring Boot项目中开始使用Apache Kafka,并开始生成和使用我们所选主题的消息. 除了一个简单的项目外,我们还将深入探 ...

  9. 2.24. Spring boot with Apache Kafka

    Spring boot 1.5.1 2.24.1. 安装 kafka 一下安装仅仅适合开发环境,生产环境请使用这个脚本安装 https://github.com/oscm/shell/tree/mas ...

最新文章

  1. Android Retrofit+RxJava 优雅的处理服务器返回异常、错误
  2. Test传送门(更新中)
  3. sass 基础——回顾
  4. 宏定义与预处理、函数和函数库
  5. 用jquery给Struts2的s:radio /标签添加change事件
  6. 重设域控还原模式密码
  7. Win2003(R2 SP2)服务器纯净版系统
  8. Linux命令卸载JDK并装新JDK
  9. 计算机第一代及第四代发展概况,1计算机发展概况解析.ppt
  10. PDF字数统计后出现2个数字分别是什么
  11. html鼠标悬停box变色,ToolTip鼠标悬停的使用
  12. 网易云/QQ音乐导入Apple Music
  13. 商汤 | 离线量化算法研究,从经典到原创
  14. 《响应式Web设计实践》一2.1 布局选项
  15. 微信小程序开发之——仿微信视频录制上传
  16. 给视频加字幕用什么软件简单?分享3个简单好用的软件
  17. MATLAB08:符号运算
  18. (灵感)集设网关于设计灵感的网站
  19. 医用钢丝圈套的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  20. Don't rely on luck.

热门文章

  1. 激光雷达进入前装上车“蜜月期”,部分厂商备战2024年“决战”
  2. 浙江省计算机二级函数,浙江省计算机二级office办公软件Excel函数大全
  3. 怎样用FL Studio添加通道
  4. 牛掰!100行Python,自动动手打造一款多国语言翻译软件,酷啊!
  5. Qt 调用海康威视的SDK进行视频预览及云台控制
  6. 原子操作底层实现与上层应用
  7. android 调用JNI SO动态库
  8. 硅谷华人高管少?看印度 CEO 怎么培养软实力!
  9. 态势丨黑客侵扰加剧,靶场为网络安全架设“防御盾”
  10. SpaceSniffer直观分析并清理硬盘垃圾文件(查看文件夹大小)