Java 性能问题:Kafka流中有时会出现延迟峰值

Java 性能问题:Kafka流中有时会出现延迟峰值,java,performance,apache-kafka,apache-kafka-streams,Java,Performance,Apache Kafka,Apache Kafka Streams,我正在卡夫卡流媒体中进行性能测试。我用Transformer创建了一个简单的Streams API // Stream data from input topic builder.stream(Serdes.String(), Serdes.String(), inTopic) // convert csv data to avro .transformValues(new TransformSupplier()) // post c

我正在卡夫卡流媒体中进行性能测试。我用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);
我正在使用10个分区的inTopic,以及1个分区的outTopic。我发现延迟很好,大约4-6毫秒。但是,我有时会面临潜伏期的突然峰值,甚至达到约60-1000毫秒。几秒钟后,潜伏期逐渐下降到约4-6毫秒。这导致我整个实验的平均潜伏期达到约67毫秒

是什么原因导致了这一突发事件?建议我一些性能调整参数(如果有)


注意:我只提供了默认的StreamsConfig。

在生成一定数量的MSG后,数据应该刷新到磁盘

这可能导致您观察到的现象

请参阅kafka配置的“log.flush.interval.messages”:

在prod中之后,我不建议您更改此属性以提高性能。您应该更改系统配置:

/proc/sys/vm/dirty_background_ratio
/proc/sys/vm/dirty_ratio

为了提高您自己的msgs刷新的效率

感谢回复哈希。下面是我的卡夫卡配置。看起来刷新间隔消息相当大。分享你对此的看法。log.flush.interval.messages=9223372036854775807 log.flush.interval.ms=null log.flush.offset.checkpoint.interval.ms=60000 log.flush.scheduler.interval.ms=9223372036854775807 log.flush.start.offset.checkpoint.interval.ms=60000这些峰值发生的频率是多少?可能它与StreamsConfig参数
commit.interval.ms
有关,默认值为30秒?我在一分钟内至少会看到一次。我还将尝试更改此参数。谢谢你的建议。