簡體   English   中英

在發送到 Kafka 主題時獲取某些消息的 TimeoutException

[英]Getting TimeoutException for some messages while sending to Kafka topic

Exception Stacktrace:
org.springframework.kafka.core.KafkaProducerException: Failed to send; nested exception is org.apache.kafka.common.errors.TimeoutException: Expiring 1 record(s) for ****-656 due to 30037 ms has passed since batch creation plus linger time
      at org.springframework.kafka.core.KafkaTemplate$1.onCompletion(KafkaTemplate.java:255) ~[spring-kafka-1.1.6.RELEASE.jar!/:?]
      at org.apache.kafka.clients.producer.internals.RecordBatch.done(RecordBatch.java:109) ~[kafka-clients-0.10.1.1.jar!/:?]
      at org.apache.kafka.clients.producer.internals.RecordBatch.maybeExpire(RecordBatch.java:160) ~[kafka-clients-0.10.1.1.jar!/:?]
      at org.apache.kafka.clients.producer.internals.RecordAccumulator.abortExpiredBatches(RecordAccumulator.java:245) ~[kafka-clients-0.10.1.1.jar!/:?]
      at org.apache.kafka.clients.producer.internals.Sender.run(Sender.java:212) ~[kafka-clients-0.10.1.1.jar!/:?]
      at org.apache.kafka.clients.producer.internals.Sender.run(Sender.java:135) ~[kafka-clients-0.10.1.1.jar!/:?]
      at java.lang.Thread.run(Thread.java:745) [?:1.8.0_77]

在部署某些 kafka 消息的第一天,就在PROD環境中收到了上述異常。 從 PROD 中撤銷更改。 Stage env 中,我在測試時從未見過該異常。 一旦我能夠重現異常但那只是一次,我可能已經跑了 10 次。 現在我對如何為這個問題找到 RCA 沒有任何指示?

我正在發布 Kafka 發件人配置,如下所示,

retries=3
retryBackoffMS=500
lingerMS=30
autoFlush=true
acksConfig=all
kafkaServerConfig=***<Can't post here>
reconnectBackoffMS=200
compressionType=snappy
batchSize=1000000
maxBlockMS=500000
        <dependency>
            <groupId>org.springframework.kafka</groupId>
            <artifactId>spring-kafka</artifactId>
            <version>1.1.8.RELEASE</version>
        </dependency>

異常基本上表示緩沖區中的記錄達到超時。

https://cwiki.apache.org/confluence/display/KAFKA/KIP-91+Provide+Intuitive+User+Timeouts+in+The+Producer?source=post_page-----fa3910d9aa54------- ---------------#KIP-91ProvideIntuitiveUserTimeoutsinTheProducer-TestPlan

在 stg 你看不到這個異常是因為 prod env 更忙。

你能更新你的 spring-kafka 版本嗎? 您的 kafka 客戶端遠遠落后於最新版本。 https://mvnrepository.com/artifact/org.springframework.kafka/spring-kafka/1.1.8.RELEASE使用 kafka 0.10.x 現在已經是 2.3.x

如果可以使用最新版本,可以將delivery.timeout.ms設置的更高一些

如果您無法升級到較新的版本,則必須玩linger.msrequest.timeout.ms (嘗試增加它們)

除此之外,默認重試次數為最大 integer,顯然您的重試次數:3 不太實用。 如果不想一直重連,30比較實用。 https://docs.confluent.io/current/installation/configuration/producer-configs.html or https://kafka.apache.org/documentation/#producerconfigs

請注意,兩個鏈接都指向當前版本

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM