Kafka生产者batch.size不生效

时间:2018-02-13 19:42:35

标签: apache-kafka

我正在使用Kafka 1.0,我增加了batch.size = 100K以优化我的制作人员表现。但我发现无论我设置batch.size = 100K还是1000K还是仅1K都没有任何效果。另外,我设置了我的linger.ms = 5,但它使性能更差。 当我调试Kafka生产者的源代码如下:

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

我发现result.newBatchCreated的值总是为true,我猜这就是为什么batch.size没有产生任何影响,因为它每次都不会在batchIsFull = true时唤醒发送者。

我现在很困惑,有什么想法吗?

1 个答案:

答案 0 :(得分:1)

这可能是这一个的重复:Improving performance of Kafka Producer

但简而言之,batch.sizelinger.ms参数应该一起调整,因为需要权衡:

  

在您的示例中,如果当前批次已满,则生产者将当前批次发送到服务器(此值为字节,因此IMO对于100个字节很少) OR < / em>发生了延迟超时。

因此,如果您必须使用这些参数进行试验和调整,以便找到最佳设置。