apache-kafka - 在高负载下得到“生产请求中收到无效元数据错误”卡夫卡生产者
问题描述
我有一个生产者向 kafka 循环写入一百万条消息。在处理了大约 50 万条消息(不准确,在不同的运行中有所不同)后,它开始给出
由于 org.apache.kafka.common.errors.NetworkException 在分区 TEST-2 上的生成请求中收到无效元数据错误:在收到响应之前服务器已断开连接。现在要请求元数据更新。在此之后,我的制作人停止响应,我只能选择终止该进程。
我在 kafka 生产者配置中没有太大变化,但不确定理想情况下我应该改变什么。我更新了以下属性
- acks = “全部”
- max.in.flight.requests.per.connection = 1
- 重试 = 3
- request.timeout.ms = 20000
- 重试.backoff.ms=1000
- 逗留.ms=5
- 批处理大小=25600
在我看来,生产者正在不断地向 Kafka 发送消息,但没有得到回复。另外,我收到的另一条消息是上面的组协调器 IP_of_kafka_server 不可用或无效,将尝试重新发现
PS:
我使用的是 kafka-0.11,一条消息大约有 20000 个字符,并且代理有足够的空间来容纳所有消息。该主题的复制因子是 1(因为进行测试),我的集群有 3 个代理。
解决方案
推荐阅读
- spring-cloud - 为什么 Spring Cloud Stream Binder for Kinesis 对 Kafka 有依赖?
- sql - 我在 SQL 中遇到一个问题:“不可能是一个界限”
- python - 使用 Celery 在 Quart 中传递应用程序上下文
- excel - 将平均计算添加到下一个空白行
- python - 来自 TX 地址和类型的 Web3 掉期金额(买入/卖出)
- oop - OOP 组合超过继承不需要的灵活性
- neo4j - 查找两个节点之间的路径时显示中间节点和关系
- r - 在 R 中给定边界内使用 sf 的点的平滑密度图
- google-cloud-platform - 在 GCP 中创建参数化 Vertex AI 管道
- laravel - 如何在 laravel 中设置两列主键?