kafka-producer batch.size与linger.ms参数

这篇具有很好参考价值的文章主要介绍了kafka-producer batch.size与linger.ms参数。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Kafka需要在吞吐量和延迟之间取得平衡,可通过下面两个参数控制。


batch.size

  • 当多个消息发送到相同分区时,生产者会将消息打包到一起,以减少请求交互. 而不是一条条发送
  • 批次大小可通过batch.size参数设置。默认:16KB
  • 较小的批次大小有可能降低吞吐量。(设置为0则完全禁用批处理)
  • 非常大的批次大小可能会浪费内存。因为我们会预先分配这个资源。

例子
比如说发送消息的频率是每秒300条,那么如果将batch.size调节到32KB,或64KB,是否可以提升发送消息的整体吞吐量呢。

因为理论上来说,提升batch的大小,可以允许更多的数据缓冲在里面,那么一次Request发送出去的数据量就更多了,这样吞吐量可能会有所提升。

但这个值也不能无限的大,过于大了之后,要是数据老是缓冲在Batch里迟迟不发送出去,那么岂不是你发送消息的延迟就会很高。

比如说,一条消息进入了Batch,但是要等待5秒钟Batch才凑满了64KB,才能发送出去。那这条消息的延迟就是5秒钟。

所以需要在这里按照生产环境的发消息的速率,调节不同的Batch大小自己测试一下,根据最终出去的吞吐量以及消息的延迟,设置一个最合理的参数。


linger.ms

上面比如设置batch.size为32KB,但是有的时刻消息比较少,过了很久,比如5min也没有凑够32KB,这时延时就很大,所以需要一个参数. 再设置一个时间,到了这个时间,即使数据没达到batch.size的值,也要将这个批次发送出去。比如设置5ms,就是到了5ms,批次大小还没到32KB,也会发出去。文章来源地址https://www.toymoban.com/news/detail-634068.html

总结

  • 同时设置batch.sizelinger.ms,就是哪个条件先满足就都会将消息发送出去。
  • Kafka需考虑高吞吐量延时的平衡。

到了这里,关于kafka-producer batch.size与linger.ms参数的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • Kafka - TimeoutException: Expiring 1 record(s) for art-0:120001 ms has passed since batch creation

    Kafka - TimeoutException: Expiring 1 record(s) for art-0:120001 ms has passed since batch creation

    报错如下: 这种情况,肯定要先看网络问题嘛 首先查看本机防火墙的配置 结果都是关闭的 (建议开放特定端口) 不关闭防火墙,但是建议本机防火墙开放特定端口,可以使用如下命令 (使用root账户) 比如 接着看看kafka中间件的配置, 问题就在这里 我并没有大改配置,具

    2024年02月04日
    浏览(10)
  • Kafka中的fetch-min-size、fetch-max-wait和request.timeout.ms配置

    当前kafka的版本为2.8.11,Spring Boot的版本为2.7.6,在pom.xml中引入下述依赖:  然后在yml配置文件进行如下配置: 1、fetch-min-size fetch-min-size表示消费者一次拉取请求中,服务器应该返回的最小数据量,单位是字节,默认值为1个字节。如果服务器没有足够的数据返回,请求会等待

    2024年02月02日
    浏览(11)
  • 【目标检测】epoch、、batch、、batch_size理解

    1 epoch         当一个完整的数据集通过神经网络一次并且返回一次的过程称为一个epoch。 然而,当一个epoch对于计算机太过庞大时,就需要把它分成多个小块。 2 batch         在不能将数据一次性通过神经网络的适合,就需要将数据集分成几个batch。 3 batch_size      

    2024年02月16日
    浏览(10)
  • 深度学习中epoch、batch、batch size和iterations详解

    1.epoch 在训练一个模型时所用到的全部数据; 备注:一般在训练时都要使用多于一个的epoch,因为在神经网络中传递完整的数据集仅仅一次是不够的,只有将完整的数据集在同样的神经网络中传递多次,才会得到比较优秀的训练效果,当然也不行,容易过拟合,所以要根据实

    2023年04月25日
    浏览(11)
  • Batch_size一些说明跟作用

    Batch_size对loss下降有影响。Batch_size是指每次迭代时所使用的样本数量。当Batch_size较大时,每次迭代可以处理更多的样本,因此可以更快地更新模型参数,加快训练速度。但是,较大的Batch_size也可能会导致模型在训练过程中陷入局部最优解,并且可能会导致模型泛化能力下降

    2024年02月10日
    浏览(14)
  • 深度学习中Epoch和Batch Size的关系

    在深度学习中,Epoch(周期)和 Batch Size(批大小)是训练神经网络时经常使用的两个重要的超参数。它们之间的关系是通过以下方式连接的: Epoch 表示整个训练数据集被神经网络完整地通过了一次。在一个 Epoch 内,神经网络会看到训练数据集中的所有样本一次,进行前向传

    2024年01月16日
    浏览(12)
  • 深度学习中,什么是batch-size?如何设置?

    batch-size 是深度学习模型在训练过程中一次性输入给模型的样本数量。它在训练过程中具有重要的意义,影响着训练速度、内存使用以及模型的稳定性等方面。 以下是 batch-size 大小的一些影响和意义: 训练速度 :较大的 batch-size 通常可以加快训练速度,因为在每次迭代中处

    2024年02月12日
    浏览(8)
  • 分布式 - 消息队列Kafka:Kafka生产者架构和配置参数

    分布式 - 消息队列Kafka:Kafka生产者架构和配置参数

    生产者发送消息流程参考图1: 先从创建一个ProducerRecord对象开始,其中需要包含目标主题和要发送的内容。另外,还可以指定键、分区、时间戳或标头。在发送ProducerRecord对象时,生产者需要先把键和值对象序列化成字节数组,这样才能在网络上传输。 接下来,如果没有显式

    2024年02月13日
    浏览(13)
  • 分布式 - 消息队列Kafka:Kafka 消费者消息消费与参数配置

    分布式 - 消息队列Kafka:Kafka 消费者消息消费与参数配置

    01. 创建消费者 在读取消息之前,需要先创建一个KafkaConsumer对象。创建KafkaConsumer对象与创建KafkaProducer对象非常相似——把想要传给消费者的属性放在Properties对象里。 为简单起见,这里只提供4个必要的属性:bootstrap.servers、key.deserializer 和 value.deserializer。 ① bootstrap.servers 指

    2024年02月12日
    浏览(19)
  • kafka中幂等性producer和事务性producer

    在Kafka中,“幂等性生产者”的概念是指一种特性,它确保消息在生产者的发送操作被重试时仅发送一次。幂等性是一种重要的特性,因为在分布式系统中,网络问题或其他故障可能导致生产者发送的消息在传输过程中失败,从而需要重新发送。如果生产者没有幂等性保证,

    2024年02月14日
    浏览(13)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包