kafka每天消费都会有剩余数据即LAG不是0

             发表于: 2020-03-17   最后更新时间: 2020-03-17  

搭建的单节点,使用的是自带的zookeeper

现在有一个消费程序消费A topic,但是每天都有一部分数据消费了一部分没有消费

protocol_commands如下图

screenshot

尝试过手动将偏移量调到最新,新的一天仍然出现了有2000+偏移量积压,数据量不大

请大佬们帮忙看下 有没有什么参数设置需要注意的 不胜感激



您需要解锁本帖隐藏内容请: 点击这里
本帖隐藏的内容




上一条: 监控Kafka出现java.lang.Thread.State: BLOCKED
下一条: kafka一个topic分了4个区(Partition),生产者(Producer)发送消息时,怎么自动的平均或随机分配到各个区?

  • 这个不能消费完,大致有什么原因呢?想不明白

    你这个消费者是会停掉吗?
    我看到protocol_commands已经没有消费者去消费它了。

    • 1、已经没有消费者去消费它了,看看程序是否已经停掉了。
      2、你在处理消息的时候,poll(100)方法,无论消息是否处理成功,都不要往上抛异常。

        • 也可以先用netstat -unltpa | grep 9092,在消费者客户端,看看是否还维护着与kafka的长连接。
          同时观察这个长连接的端口会不会过一段时间变,如果变,说明断开过,要检查消费者的代码了,不变才是正常。

            • 额 有点看不太懂~~

              [root@jichao ~]# netstat -unltpa | grep 9092
              tcp6       0      0 :::9092                 :::*                    LISTEN      83611/java          
              tcp6       0      0 192.168.11.222:31349    192.168.11.222:9092     ESTABLISHED 84391/java          
              tcp6       0      0 192.168.11.222:31369    192.168.11.222:9092     ESTABLISHED 84568/java          
              tcp6       0      0 192.168.11.222:9092     192.168.11.222:33341    ESTABLISHED 83611/java          
              tcp6       0      0 192.168.11.222:9092     192.168.11.222:31369    ESTABLISHED 83611/java          
              tcp6       1      0 192.168.11.222:31211    192.168.11.222:9092     CLOSE_WAIT  83611/java          
              tcp6       0      0 192.168.11.222:33341    192.168.11.222:9092     ESTABLISHED 87966/java          
              tcp6       0      0 192.168.11.222:31371    192.168.11.222:9092     ESTABLISHED 84568/java          
              tcp6       0      0 192.168.11.222:9092     192.168.11.222:31347    ESTABLISHED 83611/java          
              tcp6      14      0 192.168.11.222:31347    192.168.11.222:9092     ESTABLISHED 84391/java          
              tcp6       0      0 192.168.11.222:31377    192.168.11.222:9092     ESTABLISHED 84568/java          
              tcp6       0      0 192.168.11.222:9092     192.168.11.222:31349    ESTABLISHED 83611/java          
              tcp6       0      0 192.168.11.222:9092     192.168.11.222:31377    ESTABLISHED 83611/java          
              tcp6       0      0 192.168.11.222:32747    192.168.11.222:9092     ESTABLISHED 86221/java          
              tcp6       0      0 192.168.11.222:9092     192.168.11.222:31375    ESTABLISHED 83611/java          
              tcp6       0      0 192.168.11.222:32749    192.168.11.222:9092     ESTABLISHED 86221/java          
              tcp6       0      0 192.168.11.222:9092     192.168.11.222:32747    ESTABLISHED 83611/java          
              tcp6       0      0 192.168.11.222:9092     192.168.11.222:32749    ESTABLISHED 83611/java          
              tcp6       0      0 192.168.11.222:9092     192.168.11.222:31371    ESTABLISHED 83611/java          
              tcp6       0      0 192.168.11.222:31375    192.168.11.222:9092     ESTABLISHED 84568/java
              

              我粘出来

              [root@jichao ~]# jps
              52499 Bootstrap
              84391 Bootstrap
              84695 jar
              88935 Jps
              52567 Bootstrap
              83289 QuorumPeerMain
              84568 jar
              83611 Kafka
              86221 ConsoleConsumer
              52349 Bootstrap
              87966 ConsoleProducer
              
                • 你好 破案了,是代码没有catch异常。。。我真的~,结果存储程序出错后消费程序直接停在那里了。。。晕死 可能就是某一个设备上报的确实有错,因为他们是按顺序上报的,导致的有数据的总有,没有数据的总没。。。也算是一个教训
                  昨天还在想是不是因为多线程 merge into 导死锁了~~还是谢谢你了

                    对了忘了补充、:该topic是一个分区 一个备份

                    图能看到么?看不到的话 我描述下 就是用 desc命令 查看了:
                    current-offset:252525 log-end-offset 252626 总是不能完全消费 导致数据拿不到 每天都会有一些消费不到 但是却不影响去他数据局的消费
                    这么说:一部分设备的数据该有还是会有 每天一条我能取到,但是总是那一部分的设备 一直取不到数据 很神奇