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

             发表于: 2020-03-17   最后更新时间: 2020-03-17 10:41:21   4,269 游览

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

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

protocol_commands如下图

screenshot

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

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

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

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

¥6.0

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

我这个消费者是一个web项目的存储程序,按理说是不会停的。监听的这个topic,我去日志确认了下没有停过
还有什么原因么

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

你这个消费者已经lag了33583,你的描述里说只有2000条、咱俩看到的信息好像不一致。

这个是昨天 堆积了 好多天的 我手动set offset到最新 今天 又出现了2000+没消费的 是这个意思

也可以先用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

消费者和kafka放在同一台机器上

就一个服务器在一起的

我怀疑消费者代码那块的逻辑,重点排查下吧,看看消费者是否用了多线程导致的。
或者你直接拿官方的例子,什么也不要改,直接运行。

你好 破案了,是代码没有catch异常。。。我真的~,结果存储程序出错后消费程序直接停在那里了。。。晕死 可能就是某一个设备上报的确实有错,因为他们是按顺序上报的,导致的有数据的总有,没有数据的总没。。。也算是一个教训
昨天还在想是不是因为多线程 merge into 导死锁了~~还是谢谢你了

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

你的答案

查看kafka相关的其他问题或提一个您自己的问题