zoukankan      html  css  js  c++  java
  • kafka Auto offset commit faild reblance

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

    场景一、

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

    开始时间: 1042

    Topic: t_facedec

    Partition: 1

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

    运行时长: 15分钟

    结果:

    1168consume暂停,158consumer一直消费

    21046producer停止后重启推数, 158停止消费又开始消费

    31049分停止168158consumer并按顺序重启, 168消费一些数据之后158开始一直消费

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

     

     

    场景二、

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

    开始时间: 1100

    Topic: t_facedec

    Partition: 1

     

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

    场景二、

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

    开始时间: 1100

    Topic: t_facedec

    Partition: 1

     

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

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

     

    3168consumer发出警告, 心跳失败,因组正在重新平衡

    4windows端启动producer168consumer开始消费数据, 158consumer没有消费数据

     

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

     

     

    5、半小时后

     

    分解错误图:

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

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

    后续:

    1432开始继续生产数据, 数据开始被消费

    1448分再次出现平衡超时

    1502分再次出现平衡超时

    原因分析:

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

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

    3、如果consumer没有产生消费行为的时间超过最大值connections_max_idle_ms540000 (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

     

  • 相关阅读:
    今天过节提前下班
    作控件也挺郁闷啊!
    使用Windows XP的主题
    这几天关心加密的人很多
    多普达515,好爽啊!
    515看电影
    我要定计划
    龙芯II发布了,好事儿!
    转:关于星际与XP的结对编程
    昨天参加了一个微软的会
  • 原文地址:https://www.cnblogs.com/kongzhagen/p/11320015.html
Copyright © 2011-2022 走看看