KafkaStreams 应用程序有 java 线程开销



具有 KafkaStreams 拓扑,该拓扑使用并在一些处理步骤后生成另一个 kafka 主题的结果,并配置了:

num.stream.threads: 10

JConsole 表示有 20 个消费者线程、20 个生产者线程、20 个心跳线程。

为什么这样的线程数是 20 而不是 10? 在大量 num.stream.threads 的情况下,这似乎是一个很大的开销 - 在生产中我们已经配置了 64 个,并且有超过 400 个 Java 本机线程。

每个StreamThread(通过 num.stream.threads 配置(,创建一个消费者、恢复消费者(可能是全局消费者(和一个生产者(如果禁用了"恰好一次进程";你启用恰好一次处理,甚至会创建更多的生产者(。

每个使用者客户端启动一个检测信号后台线程。每个创建者客户端启动一个后台发送程序线程。这就是您看到更多线程的原因。

我找到了线程数翻倍的原因。我们使用spring-kafka StreamsBuilderFactoryBean来创建KafkaStream,从而在引擎盖下创建KafkaStream。删除后,线程数已除以 2。

相关内容

  • 没有找到相关文章

最新更新