【问题标题】:Kafka command line producer/consumer have 1 second latencyKafka 命令行生产者/消费者有 1 秒的延迟
【发布时间】:2017-05-20 17:59:58
【问题描述】:

我正在使用命令行生产者和消费者对 Kafka 进行测试运行。

我在一个终端窗口中运行它

bin/kafka-console-producer.sh --broker-list localhost:9092 --topic tag7

这个在另一个

bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic tag7 --zookeeper localhost:2181

但是我发送的数据需要超过 1 秒才能被消费者打印出来。我发送的数据是我输入给生产者的数据,所以基本上每隔几秒就有 1 条消息。是否有任何配置选项我可以更改,以便 Kafka 代理预计每秒消息很少,从而使消息移动得更快?

我使用的是Zookeeper和Kafka的默认配置,所以没有配置太多。

提前谢谢你!

【问题讨论】:

    标签: apache-kafka kafka-consumer-api kafka-producer-api


    【解决方案1】:

    由于Ivan Georgiev 的答案对我不起作用(不仅因为它是关于消费者而不是生产者),我打开了another question here in StackOverFlow,最后也在Apache's Jira@987654324 @(谢谢)回答了为什么会发生以及如何解决它。

    要更改控制台生产者的属性linger.ms(默认为1000ms)和batch.size(默认为16384),您需要在命令行中分别指定--timeout--max-partition-memory-bytes,例如,如果您位于 Kafka 的主文件夹中:

    ./bin/kafka-console-producer.sh --broker-list localhost:9092 --topic testConsole --timeout 100
    

    【讨论】:

    • 其实这两个答案都是对的。 Ivan 的答案是您如何调整消费者延迟,而这个答案是您如何调整生产者延迟。碰巧的是,生产者方面的默认设置还有更多改进空间。如果你两者都做,你应该得到端到端延迟的最佳结果。
    • 是的,我知道(我将把它添加到我的答案中,谢谢!),问题是不需要(至少在版本 0.10.2.1 中)对消费者进行任何调整生产者带来的延迟小于一秒。
    • 另外,console-producer 默认为 acks=1,这可以减少延迟,但也可能导致消息丢失,因此如果您在杀死代理时看到消息丢失并在使用默认值时测试故障转移时不要感到惊讶。跨度>
    【解决方案2】:

    Kafka 有两个配置参数 - 一个是设置在响应消费者请求之前接收的最小数据量,另一个是设置在响应请求之前等待此数据到达的最长时间。

    您可以尝试添加以下选项:

    --consumer-property fetch.max.wait.ms=0 --consumer-property fetch.min.bytes=0
    

    更多信息:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-29
      • 1970-01-01
      • 1970-01-01
      • 2018-12-18
      相关资源
      最近更新 更多