请问trace日志打印“Skipping fetch for partition {} because there is an in-flight request to {}”,通常会是什么问题?

千鹤·重弹 发表于: 2018-06-20   最后更新时间: 2018-06-20 17:32:04   4,434 游览

现象是consumer的fetch请求没法发送了,很奇怪,把consumer线程杀掉重新fetch就好了

发表于 2018-06-20
添加评论

我刚刚也遇到过这个问题,找到原因了,就是session.timeout.ms 超时时间 这个影响的, 默认10S,只有当会话超时之后,当前consumer才会从group中移除

风之刃 -> 风之刃 5年前

我的情况是:当一个消费者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源码剖析里也没有找到想要的答案,愁死了。。

那建议你用官方的消费者测试一下,什么都不要改动,看看是否有同样的现象。
还是因为逻辑导致的。另外版本也要对应。

你的答案

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