我使用的是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时。
我现在很困惑,有什么想法吗?
1条答案
按热度按时间iih3973s1#
这是一个可能的重复:提高Kafka生产者的表现
但简而言之
batch.size
以及linger.ms
参数应该一起调整,因为存在一个权衡:在您的示例中,如果当前批已满(该值以字节为单位,所以100字节是imo的最小值)或发生了延迟超时,则生产者会将当前批发送到服务器。
因此,如果你必须实验和调整这些参数,以便找到最佳的设置。