我们有一个websocket服务器,它为每个websocket客户端创建一个单独的使用者组,这样每个websocket用户都可以独立地从kafka主题接收更新。我们使用camel-api创建kafka消费者(组),它使用kafka本地javaapi,所以这与camel无关,只是提到camel仅供参考。
通过使用jmx和jmc监控,我们发现kafka心跳线程被阻塞,并且每次新的websocket客户机加入时创建的每个新使用者组的阻塞线程计数都会呈指数级增加。附加更多细节截图。想知道为什么kafka consumer/heartbeat会导致如此高的线程争用,从而影响整个应用程序的行为,最终耗尽资源。
1条答案
按热度按时间e5njpo681#
这个问题听起来可能与apache camel有关。在过去,当我和kafka交谈时,camel的行为非常不稳定(在我的例子中,camel消费者每秒提交几百次完全相同的偏移量,对于每个消费者来说,完全压倒了一个12节点的kafka集群
__offsets
主题)。只需更新到最新的camel版本就可以解决这个问题。确保您使用的是最新的camel版本。另一种验证的方法是快速启动相同数量的命令行kafka消费者,而不使用camel运行,并查看心跳是否会这样。如果他们没有,那么我几乎可以肯定这是驼峰错误/配置问题。