今天在使用python消费kafka时遇到了一些问题, 特记录一下。

场景一、

特殊情况: 单独写程序只用来生产消费数据

开始时间: 10:42

Topic: t_facedec

Partition: 1

程序启动: 168 启动consumer, 158启动consumer, windows机器producer推数据

运行时长: 15分钟

结果:

1、168的consume暂停,158的consumer一直消费

2、10:46分producer停止后重启推数, 158停止消费又开始消费

3、10:49分停止168、158的consumer并按顺序重启, 168消费一些数据之后158开始一直消费

4、后启动的consumer在消费数据

场景二、

特殊场景: 上线程序, 包含人脸识别处理

开始时间: 11:00

Topic: t_facedec

Partition: 1

1、11:46 启动168的conumer消费, 6分钟后日志如下, 未见异常信息

场景二、

特殊场景: 上线程序, 包含人脸识别处理

开始时间: 11:00

Topic: t_facedec

Partition: 1

1、11:46 启动168的conumer消费, 6分钟后日志如下, 未见异常信息

2、 11:53启动158的consumer, 日志如下, 未见异常, 158的consumer加入了组kongzhagen

3、168的consumer发出警告, 心跳失败,因组正在重新平衡

4、windows端启动producer, 168的consumer开始消费数据, 158的consumer没有消费数据

结论: 先启动的consumer会消费数据, 168的consumer关闭后, 158的consumer开始消费

5、半小时后

分解错误图:

9分钟后空连接时间到'connections_max_idle_ms': 540000,

'max_poll_records': 500, 'heartbeat_interval_ms': 3000, 'session_timeout_ms': 30000,

后续:

14:32开始继续生产数据, 数据开始被消费

14:48分再次出现平衡超时

15:02分再次出现平衡超时

原因分析:

1、引起timeout的原因是consumer每3秒触发一次心跳, 由于某种原因在30秒内协调者没有收到此consumer的心跳信息, 认为此consumer已经死掉,topic内的分区在group的成员间重新分配(reblance)

2、默认consumer的每次最大poll数据量为500, 如果处理这500条记录的时候超过了最大时间间隔max_poll_interval_ms, consumer也会退出group, 导致reblance的产生

3、如果consumer没有产生消费行为的时间超过最大值connections_max_idle_ms:540000 (9 min)时, 也会导致consumer退出该组。

解决方法:

1、增加心跳会话超时间隔

session_timeout_ms = 300000(从30改为300秒)

2、减少每次获取任务的数量

max_poll_records = 5(从500改为5)

3、增加空闲连接时间

connections_max_idle_ms=5400000(从9min改为90min)

kafka Auto offset commit faild reblance的更多相关文章

  1. kafka auto.offset.reset参数解析

    kafka auto.offset.reset参数解析 1.latest和earliest区别 2.创建topic 3.生产数据和接收生产数据 4.测试代码 auto.offset.reset关乎ka ...

  2. Kafka auto.offset.reset

    要从头消费kafka的数据,可以通过以下参数: Kafka auto.offset.reset = earliest

  3. kafka之consumer参数auto.offset.reset 0.10+

    https://blog.csdn.net/dingding_ting/article/details/84862776 https://blog.csdn.net/xianpanjia4616/ar ...

  4. kafka的auto.offset.reset详解与测试

    1. 取值及定义 auto.offset.reset有以下三个可选值: latest (默认) earliest none 三者均有共同定义: 对于同一个消费者组,若已有提交的offset,则从提交的 ...

  5. kafka的offset相关知识

    Offset存储模型 由于一个partition只能固定的交给一个消费者组中的一个消费者消费,因此Kafka保存offset时并不直接为每个消费者保存,而是以 groupid-topic-partit ...

  6. 「Kafka」Kafka中offset偏移量提交

    在消费Kafka中分区的数据时,我们需要跟踪哪些消息是读取过的.哪些是没有读取过的.这是读取消息不丢失的关键所在. Kafka是通过offset顺序读取事件的.如果一个消费者退出,再重启的时候,它知道 ...

  7. kafka主题offset各种需求修改方法

    简要:开发中,常常因为需要我们要认为修改消费者实例对kafka某个主题消费的偏移量.具体如何修改?为什么可行?其实很容易,有时候只要我们换一种方式思考,如果我自己实现kafka消费者,我该如何让我们的 ...

  8. Kafka提交offset机制

    在kafka的消费者中,有一个非常关键的机制,那就是offset机制.它使得Kafka在消费的过程中即使挂了或者引发再均衡问题重新分配Partation,当下次重新恢复消费时仍然可以知道从哪里开始消费 ...

  9. kafka_2.11-0.10.2.1中的auto.offset.reset

    在使用spark连接kafka消费topic时,发现无论怎么设置,也无法从头开始消费. 查看配置得出auto.offset.reset的以下3种设置及含义: earliest 当各分区下有已提交的of ...

随机推荐

  1. hadoop 异常

    2019-09-20 22:49:51,955 WARN org.apache.hadoop.hdfs.server.datanode.DataNode: Problem connecting to ...

  2. 协议——SCCB与IIC的区别

    SCCB(Serial Camera Control Bus,串行摄像头控制总线)是由OV(OmniVision的简称)公司定义和发展的三线式串行总线,该总线控制着摄像头大部分的功能,包括图像数据格式 ...

  3. mysql疑问

  4. python MySQL 插入Elasticsearch

    一.需求分析 注意: 本环境使用 elasticsearch 7.0版本开发,切勿低于此版本 mysql 表结构 有一张表,记录的数据特别的多,需要将7天前的记录,插入到Elasticsearch中, ...

  5. JDK8-lambda表达式以及接口可以定义默认方法

    一.Lambda表达式 1.Lamdba Lambda 允许把函数作为一个方法的参数,使用Lamdba可以让开发的代码更加简洁,但是易读性差,新人不了解Lamdba表达式或者代码功底有点差,不容易读懂 ...

  6. .NET/C# 阻止屏幕关闭,阻止系统进入睡眠状态

    原文:.NET/C# 阻止屏幕关闭,阻止系统进入睡眠状态 在 Windows 系统中,一段时间不操作键盘和鼠标,屏幕便会关闭,系统会进入睡眠状态.但有些程序(比如游戏.视频和演示文稿)在运行过程中应该 ...

  7. SpringCloud整合过程中jar依赖踩坑经验

    今天在搭建SpringCloud Eureka过程中,一直在报pom依赖错误,排查问题总结如下经验. 1.SpringBoot整合SpringCloud两者版本是有严格约束的,详细见SpringBoo ...

  8. 使用winform程序控制window服务的操作

    继上篇 c#之添加window服务(定时任务) 基础之上, 这篇文章主要讲述,使用winform程序来控制window服务的安装,启动,停止,卸载等操作 1.在同一个解决方案添加winform项目,如 ...

  9. String 字符串的==和eqauls区别

    1.对于基本类型来说,==比较的是数据的值,equals方法也是数据的值: 对于引用类型来说,==比较的是引用的地址,equals方法比较的是对象的内容. 2.String是引用类型,用“=”创建字符 ...

  10. iptables详细介绍

    iptables简介 netfilter/iptables(简称为iptables)组成Linux平台下的包过滤防火墙,与大多数的Linux软件一样,这个包过滤防火墙是免费的,它可以代替昂贵的商业防火 ...