一段时间后,Kafka 生产者无法更新元数据
Posted
技术标签:
【中文标题】一段时间后,Kafka 生产者无法更新元数据【英文标题】:Kafka producer is not able to update metadata after some time 【发布时间】:2016-10-03 09:17:25 【问题描述】:我有一个包含3 brokers
和1 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.errors.KafkaTimeoutError: KafkaTimeoutError: 60.0 秒后更新元数据失败
scala中的Flink Kafka程序给出超时错误org.apache.kafka.common.errors.TimeoutException:60000毫秒后更新元数据失败