一段时间后,Kafka 生产者无法更新元数据

Posted

技术标签:

【中文标题】一段时间后,Kafka 生产者无法更新元数据【英文标题】:Kafka producer is not able to update metadata after some time 【发布时间】:2016-10-03 09:17:25 【问题描述】:

我有一个包含3 brokers1 zookeeper 的kafka 环境。我在我的主题中推送了大约 20K 条消息。 Apache Storm正在计算生产者添加的topic中的数据。

几个小时过去了,当我尝试向 kafka 发送消息时,它显示以下异常

org.apache.kafka.common.errors.TimeoutException: Failed to update metadata after 60000 ms.

重新启动 kafka 服务器后,它工作正常。 但是在production 上,我无法每次都重新启动我的服务器。 所以任何人都可以帮助我找出我的问题。

我的kafka配置如下:

prodProperties.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG,"list of broker");
prodProperties.put(ProducerConfig.ACKS_CONFIG, "1");
prodProperties.put(ProducerConfig.RETRIES_CONFIG, "3");
prodProperties.put(ProducerConfig.LINGER_MS_CONFIG, 5);

【问题讨论】:

你查看kafka服务器的日志有什么发现吗? 我对 Storm 无能为力,但对于 Flink,我们遇到了问题,即 Flink 每 10 毫秒与 Kafka Broker 同步一次,并且在 __consumer_offset 主题上产生了非常高的负载,因此没有任何工作正常。检查日志并使用监控工具检查代理端的负载。顺便说一句-zookeeper 的单个实例是非常糟糕的主意(TM)-生产系统至少需要 3 个。 【参考方案1】:

虽然 Kafka 生产者调优是一个相当困难的话题,但我可以想象您的生产者试图生成记录的速度比传输到 Kafka 集群的速度要快。

有一个生产者设置buffer.memory,它定义了生产者在阻塞之前可以使用多少内存。默认值为 33554432 (33 MB)。

如果你增加生产者内存,你将避免阻塞。尝试不同的值,例如 100MB。

【讨论】:

以上是关于一段时间后,Kafka 生产者无法更新元数据的主要内容,如果未能解决你的问题,请参考以下文章

Kafka 生产者创建 Debezium MySQL 连接器后无法创建主题并引发连续错误

春季启动生产者在kafka重启后无法发送任何消息

kafka.errors.KafkaTimeoutError: KafkaTimeoutError: 60.0 秒后更新元数据失败

scala中的Flink Kafka程序给出超时错误org.apache.kafka.common.errors.TimeoutException:60000毫秒后更新元数据失败

为啥Kafka消费者连接zookeeper,生产者从broker获取元数据?

Kafka 控制台生产者无法连接到代理