在我的情况下,我的制作人使用librdkafka,topic.metadata.refresh.interval.ms
默认为5分钟。
在经纪人方面connections.max.idle.ms
是2小时,我们的qps相当低,但我们想要在rtt 20ms内获得99.9%的请求,但如果经纪人关闭连接,生产者将重新建立频道并发送消息,这将获得高延迟。似乎元数据刷新不起作用。
如何解决此问题?
答案 0 :(得分:0)
对于每个元数据刷新,librdkafka将选择一个合适的代理连接来发送请求,它不会发送所有代理连接,也不会发送真正的随机连接,因此主题元数据刷新不能过去常常保持所有联系。
Kafka协议实际上没有一种廉价或无副作用的“心跳”#34; (不要与HeartbeatRequest混淆)空闲连接。
使用broker> = v0.11,可以仅为集群信息发送元数据请求(不请求任何主题,因此便宜)。 我建议为librdkafka创建一个功能请求github问题,如果这是你想要的。
但如果你不想要空闲连接,为什么不设置connections.max.idle.ms真的很高?