我们有一个WebSocket服务器,它为每个WebSocket客户端创建一个单独的消费者组,这样每个WebSocket用户就可以相互独立地接收来自Kafka主题的更新。我们使用camel API来创建Kafka消费者(组),它使用了Kafka原生Java API,所以这与Camel没有任何关系,但提到camel只是一个FYI。
通过使用JMX和JMC监控,我们发现Kafka心跳线程被阻塞,并且对于每次新的WebSocket客户端加入时创建的每个新消费者组,被阻塞线程的数量呈指数级增长。附加屏幕截图以了解更多详细信息。想知道为什么Kafka消费者/心跳会导致如此高的线程争用,从而影响整体应用程序行为,最终耗尽资源。

发布于 2018-11-06 23:42:51
这个问题听起来可能与Apache Camel有关。我在过去与Kafka交谈时,骆驼的行为真的很不稳定(在我的例子中,骆驼消费者每秒为每个消费者提交数百次完全相同的偏移量,用提交到__offsets主题完全压倒了一个巨大的12节点kafka集群)。简单地更新到最新的Camel版本就可以解决这个问题。确保您使用的是最新可用的Camel版本。
另一种验证方法是在不运行Camel的情况下快速启动相同数量的命令行kafka消费者,并查看心跳是否以这种方式运行。如果他们没有,那么我几乎可以肯定这是Camel的bug/配置问题。
https://stackoverflow.com/questions/53174733
复制相似问题