现象是consumer的fetch请求没法发送了,很奇怪,把consumer线程杀掉重新fetch就好了
我刚刚也遇到过这个问题,找到原因了,就是session.timeout.ms 超时时间 这个影响的, 默认10S,只有当会话超时之后,当前consumer才会从group中移除
我的情况是:当一个消费者poll阻塞的时候(topic的分区数据都到达偏移量的最大,没有消息可以消费情况下)
有多个消费者吗?
同一个主题有多个消费者组内消费 同一个节点上也有多个消费者消费不同主题 会是什么原因呢?
主题的分区数 = 消费者组内的成员数,如果成员大于分区数,则多余的成员永远拿不到消息,除非有其他的成员关闭。
这个我肯定知道啊 可是现在现象应该不是这个场景吧。。
这个查过了 对应发不出fetch请求的consumer lag值一直飙升 我们现在就是做了动态监控 当lag值大于某个阈值后热重启消费者。。但是这样太土了。。还是想找到根因
研究了下Fetcher的createFetchRequests方法(0.10),应该是else if (this.client.pendingRequestCount(node) == 0) 这个分支没有进去。。Apache kafka源码剖析里也没有找到想要的答案,愁死了。。
那建议你用官方的消费者测试一下,什么都不要改动,看看是否有同样的现象。还是因为逻辑导致的。另外版本也要对应。
找不到想要的答案?提一个您自己的问题。
0 声望
这家伙太懒,什么都没留下
我刚刚也遇到过这个问题,找到原因了,就是session.timeout.ms 超时时间 这个影响的, 默认10S,只有当会话超时之后,当前consumer才会从group中移除
我的情况是:当一个消费者poll阻塞的时候(topic的分区数据都到达偏移量的最大,没有消息可以消费情况下)
有多个消费者吗?
同一个主题有多个消费者组内消费 同一个节点上也有多个消费者消费不同主题 会是什么原因呢?
主题的分区数 = 消费者组内的成员数,如果成员大于分区数,则多余的成员永远拿不到消息,除非有其他的成员关闭。
这个我肯定知道啊 可是现在现象应该不是这个场景吧。。
显示某个消费组的消费详情(支持0.9版本+)
bin/kafka-consumer-groups.sh --new-consumer --bootstrap-server localhost:9092 --describe --group test-consumer-group
看看消费者占用情况。
这个查过了 对应发不出fetch请求的consumer lag值一直飙升 我们现在就是做了动态监控 当lag值大于某个阈值后热重启消费者。。但是这样太土了。。还是想找到根因
研究了下Fetcher的createFetchRequests方法(0.10),应该是else if (this.client.pendingRequestCount(node) == 0) 这个分支没有进去。。Apache kafka源码剖析里也没有找到想要的答案,愁死了。。
那建议你用官方的消费者测试一下,什么都不要改动,看看是否有同样的现象。
还是因为逻辑导致的。另外版本也要对应。
你的答案