kafka producer batch.size无效

pcww981p  于 2021-06-07  发布在  Kafka
关注(0)|答案(1)|浏览(880)

我使用的是kafka1.0,我增加了batch.size=100k以优化我的生产者性能。但是我发现无论我设置什么批都没有任何效果。大小=100k或1000k或仅1k。另外,我将linger.ms设置为5,但这使性能更差。当我调试kafka producer的源代码时,如下所示:

if (result.batchIsFull || result.newBatchCreated) {
     this.sender.wakeup();
}

我发现result.newbatchcreated的值总是true,我想这就是batch.size没有起任何作用的原因,因为它每次都会唤醒发送者,而不是batchisfull=true时。
我现在很困惑,有什么想法吗?

iih3973s

iih3973s1#

这是一个可能的重复:提高Kafka生产者的表现
但简而言之 batch.size 以及 linger.ms 参数应该一起调整,因为存在一个权衡:
在您的示例中,如果当前批已满(该值以字节为单位,所以100字节是imo的最小值)或发生了延迟超时,则生产者会将当前批发送到服务器。
因此,如果你必须实验和调整这些参数,以便找到最佳的设置。

相关问题