线上偶尔出现超时报错
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和消息体的编解码方式
超时警告,不是错误,如果偶尔出现,不是因为网络抖动的原因话,那说明生产者客户端的发送能力低于消息产生的能力,要么是服务器的接收能力不足,导致客户端发送阻塞,需要关注一下服务器接收消息带宽总数。
客户端可以调整请求批次的消息大小,来提高吞吐量
batch.size=162840
可参考:https://www.orchome.com/472
服务器每个时间窗口最大接收消息的带宽总量
socket.request.max.bytes=默认100m
可参考:https://www.orchome.com/472
完整的报错是这样的
可以建议一下 , max.request.size 调整多大合适呢?
我不清楚你集群的规模,当下的压力指标等信息额,无法给合适的建议。
linger.ms
你设置的300,太大了,可以考虑50。batch-size
可以稍微加大一点,比如20%。现在发现,项目启动的时候打印producer的信息,linger.ms 和request.timeout.ms没有生效,配置是在yml里的
配置 linger.ms为50后 出现 了TimeoutException: Expiring 23 record(s) for data-export-store-4: 50025 ms has passed since last append
频率是否降低?
还是未有改善,目前来看,因为业务,kafka瞬间暴增60000条数据,才会导致这个错误
1、可以考虑增加分区数来分摊压力
2、batch.size 继续加大
3、重试次数多加2次。
目前分区是12个,6台机器
hatch.size=244260 linger.ms: 100 request.timeout.ms: 60000 max.request.size: 2097152
重试一次,还是会出现错误
兄弟,你解决了吗
没有 加了机器后出现频率低了
你的答案