Kafka Streams 应用程序在 kafka 服务器上打开了太多文件
Kafka Streams application opening too many files on kafka servers
我一直在开发基于 java kafka-streams API 的应用程序,其目标是处理来自一个 kafka 主题的数据流,并将其生成到另一个主题。
看起来,每当我开始使用 kafka-streams 应用程序生成消息时,文件句柄只会在我正在使用的 kafka 代理上保持打开状态,并且它们永远不会关闭,这意味着最终 kafka 服务器也会以许多打开的文件,kafka 和 zookeeper 守护进程崩溃。
我在 Java 上使用 kafka-streams-1.0.1
API jar,在 JDK 上使用 运行 11。kafka 集群是 Kafka 版本 1.0。 0.
我的应用程序配置包括以下 kafka 生产者配置:
batch.size
:设置为 100,000 条消息。
linger.ms
: 设置为 1,000 毫秒。
buffer.memory
: 设置为相当于 5 兆字节的字节。
流处理本身很简单,组成:
stream.map((k,v) -> handle(k,v)).filter((k,v) -> v != null).to(outgoingTopic);
如果你们有任何建议,我将不胜感激。
使用 Java 8 或 Java 10 或更低并且
使用最新的 Kafka,https://kafka.apache.org/quickstart
在此处查看有关已提交错误的一些报告 https://issues.apache.org/jira/browse/KAFKA-6855
如果消息可能导致时间戳乱序,那么覆盖 Kafka 流时间戳提取器似乎不是一个好主意。
恢复到默认时间戳提取器后,我已经全部修复了
我一直在开发基于 java kafka-streams API 的应用程序,其目标是处理来自一个 kafka 主题的数据流,并将其生成到另一个主题。
看起来,每当我开始使用 kafka-streams 应用程序生成消息时,文件句柄只会在我正在使用的 kafka 代理上保持打开状态,并且它们永远不会关闭,这意味着最终 kafka 服务器也会以许多打开的文件,kafka 和 zookeeper 守护进程崩溃。
我在 Java 上使用 kafka-streams-1.0.1
API jar,在 JDK 上使用 运行 11。kafka 集群是 Kafka 版本 1.0。 0.
我的应用程序配置包括以下 kafka 生产者配置:
batch.size
:设置为 100,000 条消息。linger.ms
: 设置为 1,000 毫秒。buffer.memory
: 设置为相当于 5 兆字节的字节。
流处理本身很简单,组成:
stream.map((k,v) -> handle(k,v)).filter((k,v) -> v != null).to(outgoingTopic);
如果你们有任何建议,我将不胜感激。
使用 Java 8 或 Java 10 或更低并且 使用最新的 Kafka,https://kafka.apache.org/quickstart
在此处查看有关已提交错误的一些报告 https://issues.apache.org/jira/browse/KAFKA-6855
如果消息可能导致时间戳乱序,那么覆盖 Kafka 流时间戳提取器似乎不是一个好主意。 恢复到默认时间戳提取器后,我已经全部修复了