我在Kafka Streaming中进行性能测试。我用Transformer创建了一个简单的Streams API。
// Stream data from input topic
builder.stream(Serdes.String(), Serdes.String(), inTopic)
// convert csv data to avro
.transformValues(new TransformSupplier())
// post converted data to output topic
.to(Serdes.String(), Serdes.ByteArray(), outTopic);
我使用inTopic有10个分区和outTopic有1个分区。我看到延迟很好,大约4-6毫秒。但是,我有时会面临潜伏期的突然飙升,甚至达到~60 - 1000毫秒。然后几秒后,它逐渐下降延迟到4-6毫秒。这导致我整个实验的平均延迟为~67 ms。
突然飙升的原因是什么?如果有的话,建议我一些性能调整参数。
注意:我仅提供了默认的StreamsConfig。
产生一定量的消息后,应将数据刷新到磁盘。
这可能会导致您观察到的现象。
请参考kafka配置的“log.flush.interval.messages”:Link
在prod之后,我不建议你改变这个属性来改进。你应该改变你的系统配置:
/proc/sys/vm/dirty_background_ratio
/proc/sys/vm/dirty_ratio
为了提高自己的msgs flush的效率