kafka超时报错 Expiring 28 record(s) for xxx-11: 30302 ms has passed since batch creation plus linger time

n 发表于: 2020-07-16   最后更新时间: 2020-07-16  

线上偶尔出现超时报错

nested exception is org.apache.kafka.common.errors.TimeoutException: Expiring 28 record(s) for xxx-11: 30302 ms has passed since batch creation plus linger time

retries: 1
# 每次批量发送消息的数量
batch-size: 162840
linger: 300
acks: 1
request.timeout.ms: 50000
# 缓存容量
buffer-memory: 33554432
# 指定消息key和消息体的编解码方式


您需要解锁本帖隐藏内容请: 点击这里
本帖隐藏的内容




上一条: kafka一直在rebalance,导致无法消费
下一条: kafka 发送消息 BLOCKED 问题

  • 超时警告,不是错误,如果偶尔出现,不是因为网络抖动的原因话,那说明生产者客户端的发送能力低于消息产生的能力,要么是服务器的接收能力不足,导致客户端发送阻塞,需要关注一下服务器接收消息带宽总数.
    客户端可以调整请求批次的消息大小,来提高吞吐量

    batch.size=162840
    

    可参考:https://www.orchome.com/472
    服务器每个时间窗口最大接收消息的带宽总量

    socket.request.max.bytes=默认100m
    

    可参考:https://www.orchome.com/472

    • [ERROR] [kafka-producer-network-thread | producer-1] - kafka sendMessage error, ex = Failed to send; nested exception is org.apache.kafka.common.errors.TimeoutException: Expiring 10 record(s) for xxx-4: 30185 ms has passed since batch creation plus linger time, topic = xxx,
      

      完整的报错是这样的

        • 我不清楚你集群的规模,当下的压力指标等信息额,无法给合适的建议。
          linger.ms你设置的300,太大了,可以考虑50。
          batch-size可以稍微加大一点,比如20%。

            • 配置 linger.ms为50后 出现 了TimeoutException: Expiring 23 record(s) for data-export-store-4: 50025 ms has passed since last append

                • 目前分区是12个,6台机器 hatch.size=244260,linger.ms: 100, request.timeout.ms: 60000,max.request.size: 2097152,重试一次,还是会出现错误