Kafka 在高负载时抛出超时错误,错误:org.apache.kafka.common.errors.TimeoutException

问题描述 投票:0回答:0

我在我的应用中使用Spring Kafka,当负载过高时,它会抛出超时异常:

Exception: Expiring XX record(s) for topic_name: 600904 ms has passed since batch creation plus linger time at org.springframework.kafka.core.KafkaTemplate.lambda
org.apache.kafka.common.errors.TimeoutException: Expiring 54 record(s) for topic_name: 600904 ms has passed since batch creation plus linger time

我尝试过多个生产者配置。

Changed linger.ms to 0,10,100 and 1000. Changed batch.size to 131072 and 65000 Increased the request.timeout.ms to 100000 and 600000
休息,所有的配置大部分都是默认的。

通过更改这些属性,我们正在减少或延迟一些错误,但仍未完全消除它们。

我正在使用带有回调的 Kafka send() 方法。我也尝试过异步调用此方法,但仍然没有成功。

每条消息大约 4-6 KB。并且在短时间内发送了 2-3 百万条消息。我们共有 10 个分区。

我已经看到在这种情况下调用 flush() 会有所帮助,但这会降低性能并增加发送时间。

除了配置之外还有什么可以解决这个问题的吗? 或者是否还有其他需要更改的配置?

java apache-kafka kafka-producer-api
© www.soinside.com 2019 - 2024. All rights reserved.