我正在尝试将消息从生产者发送到另一个DC中的kafka节点。生产者和使用者都设置为默认0.10.0.0配置,并且消息大小不是很小(大约500k)。在大多数情况下,发送邮件时会遇到以下例外情况:
org.apache.kafka.common.errors.TimeoutException:包含1条记录的批处理由于超时而过期,同时向代理人请求主题0的元数据org.apache.kafka.common.errors.TimeoutException:无法在内部分配内存配置的最大阻止时间为60000 ms。
之后,不再传输任何消息(即使未调用其余消息的回调)。
我只是想插话,因为今天我收到了完全相同的错误。我尝试增加request.timeout.ms,减少batch.size,甚至将设置batch.size为零。但是,没有任何效果。
原来是因为服务器无法连接到10个Kafka群集节点之一。所以,我看到的是抛出了一些不适当的异常。顺便说一句,如果重要的话,我们将使用Kafka 0.9.0.1。
根据卡夫卡文档:
小批量大小将使批处理不太常见,并且可能会降低吞吐量(批量大小为零将完全禁用批处理)。非常大的批处理大小可能会更加浪费内存,因为我们总是会分配指定批处理大小的缓冲区以应对额外的记录。
设置一下batch.size = 0,问题就解决了。
| 归档时间: |
|
| 查看次数: |
7016 次 |
| 最近记录: |