Adi*_*vek 5 apache-kafka kafka-producer-api
我们正在使用kafka 0.10.2.1。该文档指定了即使缓冲区未满也可以发送的缓冲区。
默认情况下,即使缓冲区中还有其他未使用的空间,缓冲区也可以立即发送。但是,如果要减少请求数,可以将linger.ms设置为大于0的值。
但是,它也表示即使延迟时间设置为0ms,生产者也将尝试批处理请求-
请注意,时间紧靠的记录通常即使linger.ms = 0也将一起批处理,因此在高负载下将进行批处理,而与linger配置无关。但是,如果不将其设置为大于0的值,则在未处于最大负载的情况下,可能会导致更少的请求和更有效的请求,但以少量的等待时间为代价。
凭直觉,似乎任何种类的批处理都需要一些延迟时间,而使延迟时间为0的唯一方法是使代理呼叫同步。显然,将延迟时间保持为0似乎并不会像阻塞发送呼叫那样对性能造成太大影响,但似乎会对性能产生一些影响。有人可以澄清上面的文档怎么说吗?
随着linger.ms=0
记录的尽快发送和许多请求,这可能会影响性能。通过增加linger.ms
中等/高负载来强制稍作等待将优化批次的使用并提高吞吐量。这也取决于记录的大小,该大小越大,则批处理就越少(batch.size
默认为16Kb)。
基本上它是一个权衡的数量之间的请求和吞吐量的数量,它实际上取决于您的方案,但是立即送不走配料和压缩(如果启用)的充分利用,我建议运行一些指标具有不同的值linger.ms
,例如如0/5/10/50/200
一般来说,我建议设置 linger.ms > 0
参考文献:
归档时间: |
|
查看次数: |
5218 次 |
最近记录: |