Kafka Streams - 如何添加线程/使用 StreamsConfig.NUM_STREAM_THREADS_CONFIG
Kafka KStreams - how to add threads / using StreamsConfig.NUM_STREAM_THREADS_CONFIG
我正在弄乱这个参数,运行 变得有些奇怪。我的应用程序 运行 没有它就可以了,但是当我将这一行添加到配置中时:
config.put(StreamsConfig.NUM_STREAM_THREADS_CONFIG, "3");
CPU 使用率不会攀升至零以上。应用程序似乎没有做 任何事情。没有错误。
是否有一些建议的方法来增加 KStreams 应用程序的线程使用率?或者只是 'trust the force' 然后让所有 运行 在一起?
编辑:
- 我有两个分区
- 已通过
kafka-consumer-groups
检查消费者延迟 - 大量可用记录
- 即使只有 1 个分区 - 为什么有多个线程什么都不做? 0% CPU.
你有多少分区?如果您只有一个分区,那么增加线程数不会有任何影响,因为分区数定义了最大并行度。所以如果你有 1 个分区和 3 个线程,你将只有 1 个繁忙线程。
检查输入主题是否有可供使用的数据。确保将 StreamsConfig.AUTO_OFFSET_RESET_CONFIG
设置为 latest
。
如果您 运行 它之前使用相同的 applicationId
那么 Kafka Streams 可能已经消耗了所有数据,因此将无事可做。在这种情况下,您可以使用不同的 applicationId
或者您可以使用 Kafka Streams Reset Tool 来重置主题。
此设置用于某些测试,即KStreamRepartitionJoinTest,并且似乎工作正常。
我正在弄乱这个参数,运行 变得有些奇怪。我的应用程序 运行 没有它就可以了,但是当我将这一行添加到配置中时:
config.put(StreamsConfig.NUM_STREAM_THREADS_CONFIG, "3");
CPU 使用率不会攀升至零以上。应用程序似乎没有做 任何事情。没有错误。
是否有一些建议的方法来增加 KStreams 应用程序的线程使用率?或者只是 'trust the force' 然后让所有 运行 在一起?
编辑:
- 我有两个分区
- 已通过
kafka-consumer-groups
检查消费者延迟 - 大量可用记录 - 即使只有 1 个分区 - 为什么有多个线程什么都不做? 0% CPU.
你有多少分区?如果您只有一个分区,那么增加线程数不会有任何影响,因为分区数定义了最大并行度。所以如果你有 1 个分区和 3 个线程,你将只有 1 个繁忙线程。
检查输入主题是否有可供使用的数据。确保将 StreamsConfig.AUTO_OFFSET_RESET_CONFIG
设置为 latest
。
如果您 运行 它之前使用相同的 applicationId
那么 Kafka Streams 可能已经消耗了所有数据,因此将无事可做。在这种情况下,您可以使用不同的 applicationId
或者您可以使用 Kafka Streams Reset Tool 来重置主题。
此设置用于某些测试,即KStreamRepartitionJoinTest,并且似乎工作正常。