转行到大数据将近一年了,在工作中经常遇到 kafka send data 超时的报错,今天给各位道友浅谈一下这类问题的经验:
报错日志:
xx ms has passed since last append / xx ms has passed since batch creation plus linger time / ms has passed since last attempt plus backoff time
此异常错误即RecordBatch#maybeExpire方法抛出,意思是:在设置的timeout时间内send线程没有将client缓存内的请求发送出去。
原因通常来说为以下几种:文章来源:https://www.toymoban.com/news/detail-506568.html
- kafka服务端压力过大导致处理请求慢,查看kafka服务端压力是否过大;
- 客户端在短时间发送大量数据导致发送瓶颈;
- 一些参数配置和应用本身数据流量模型不匹配;
- 平台任务或者客户端本身压力过大(cpu/mem/full gc/网络等等);
- broker机器故障;
怎么处理文章来源地址https://www.toymoban.com/news/detail-506568.html
- 服务端压力过大可以增加服务端partition数量
- 客户端问题,由于其在短时间可能读取发送大量数据导致客户端发送瓶颈,即生成数据的速度大于客户端发送的速度。 a. 判断发送的数据量,根据能力减少数据量均匀发送; b. 判断发送的数据量,增加任务节点或者并发度分摊数据量发送; c. 客户端设置request.timeout.ms为60*1000,或者更大。
- 其他常见的参数调整,参数调优更多和应用自身的一些流量模型相关。 a. 调整batch.size或者linger.ms,通常调大比如到几兆,减少发送qps。对于qps过高的可以进行调整。(核心思想,攒批,提高性能)
- 客户端压力过大,cpu/mem/gc/net等导致发送超时。调整资源配置等
- broker机器故障,切换机器
到了这里,关于kafka send data 超时问题 报错:xx ms has passed since last append的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!