Apache kafka KafkaStream上的低吞吐量

Apache kafka KafkaStream上的低吞吐量,apache-kafka,apache-kafka-streams,Apache Kafka,Apache Kafka Streams,我的kafka流吞吐量有一些问题。我试着读一个有+90M记录的主题。我的kafka stream应用程序基本上只打印每条记录,我的吞吐量达到每秒约4K条记录。但是,如果我使用基本的kafka avro控制台使用者命令行使用完全相同的主题,我将获得每秒约80K条记录的吞吐量!是否有一些已知的限制可以解释为什么流应用程序的性能不如kafka avro控制台消费者的基础?关于我应该调整哪个流配置以获得更好的性能,有什么指导吗 我的配置是: Properties configs = new Proper

我的kafka流吞吐量有一些问题。我试着读一个有+90M记录的主题。我的kafka stream应用程序基本上只打印每条记录,我的吞吐量达到每秒约4K条记录。但是,如果我使用基本的kafka avro控制台使用者命令行使用完全相同的主题,我将获得每秒约80K条记录的吞吐量!是否有一些已知的限制可以解释为什么流应用程序的性能不如kafka avro控制台消费者的基础?关于我应该调整哪个流配置以获得更好的性能,有什么指导吗

我的配置是:

Properties configs = new Properties();
configs.put(CommonClientConfigs.BOOTSTRAP_SERVERS_CONFIG, kafkaConfig.getBootstrapServer());
configs.put(AbstractKafkaAvroSerDeConfig.SCHEMA_REGISTRY_URL_CONFIG,
            kafkaConfig.getSchemaRegistryServer());
configs.put(StreamsConfig.DEFAULT_KEY_SERDE_CLASS_CONFIG, SpecificAvroSerde.class);
configs.put(StreamsConfig.DEFAULT_VALUE_SERDE_CLASS_CONFIG, SpecificAvroSerde.class);
configs.put(ConsumerConfig.AUTO_OFFSET_RESET_CONFIG, EARLIEST);
configs.put(StreamsConfig.APPLICATION_ID_CONFIG, "KS-test3");
而拓扑结构会:

 StreamsBuilder streamsBuilder = new StreamsBuilder();
    streamsBuilder.stream(scheduleEventTopic)
                  .foreach(this::printRecord);
    return streamsBuilder.build();

尝试将
max.poll.records
的值增加到更高的值。此配置意味着您可以在一次
poll()中获得的记录数

您可能还希望查看
max.poll.interval.ms
每次轮询之间的时间,并尝试减少它,然后查看

此外,您可能希望增加流线程的数量,并将其设置为您正在使用的主题的分区数

num.stream.threads (1 default)
参考:


注:默认值来自上述参考,您的可能会有所不同。

我确实发现了我的问题。
commit.interval
设置为0以禁用聚合中的批处理。相反,我使用了
cache.max.bytes.buffering
在不影响性能的情况下获得相同的效果。我的吞吐量从4K tps增加到了100k tps

我遇到了同样的问题,花了我一天的时间。谢谢
num.stream.threads (1 default)