【问题标题】:Kafka ConsumerPerformance卡夫卡消费者性能
【发布时间】:2019-03-27 00:51:27
【问题描述】:

我的 Kafka 集群具有下一个配置。

  • 具有 3 个代理的 Kafka 版本集群 (v1.1.0)
  • 一个具有 5 个分区和 3 个副本的主题(“fara”)
  • 在每个分区中有 10.000.000 条消息。总计 50.000.000

我正在使用 kafka-consumer-perf.test 与下面使用 ConsumerPerformance 的发行版一起提供。

我的第一个工作配置是下一个:

  • 1 个消费者实例(实例的 50.000.000 条记录)
  • 5 个提取线程(1 个按分区)
  • 消费者组 = testgroup1

我运行的命令:

$KAFKA_HOME/bin/kafka-consumer-perf-test.sh \ --新消费者\ --经纪人列表 $BROKER_LIST \ --消息 50000000 \ --消息大小 100 \ --主题法拉\ --consumer.config $KAFKA_HOME/config/consumer.ssl.properties \ --num-fetch-threads 5 \ --显示详细统计信息\ --reporting-interval $REPORT_INTERVAL \ --group testgroup1

我定期运行以下命令

./kafka-run-class.sh kafka.admin.ConsumerGroupCommand --bootstrap-server 192.168.10.10:9093 --new-consumer --describe --group testgroup1 --command-config ../config/consumer.properties

          TOPIC           PARTITION  CURRENT-OFFSET  LOG-END-OFFSET  LAG             CONSUMER-ID                                     HOST            CLIENT-ID
          fara          4          1056241         10000000        8943759         consumer-1-f9fd5d69-6ba1-4da1-9eb9-29a64a83d1fa /192.168.10.145 consumer-1
          fara          3          1075308         10000000        8924692         consumer-1-f9fd5d69-6ba1-4da1-9eb9-29a64a83d1fa /192.168.10.145 consumer-1
          fara          1          1056241         10000000        8943759         consumer-1-f9fd5d69-6ba1-4da1-9eb9-29a64a83d1fa /192.168.10.145 consumer-1
          fara          2          2129355         10000000        7870645         consumer-1-f9fd5d69-6ba1-4da1-9eb9-29a64a83d1fa /192.168.10.145 consumer-1
          fara          0          1075308         10000000        8924692         consumer-1-f9fd5d69-6ba1-4da1-9eb9-29a64a83d1fa /192.168.10.145 consumer-1


          fara          4          2302837         10000000        7697163         consumer-1-f9fd5d69-6ba1-4da1-9eb9-29a64a83d1fa /192.168.10.145 consumer-1
          fara          3          2377136         10000000        7622864         consumer-1-f9fd5d69-6ba1-4da1-9eb9-29a64a83d1fa /192.168.10.145 consumer-1
          fara          1          2302837         10000000        7697163         consumer-1-f9fd5d69-6ba1-4da1-9eb9-29a64a83d1fa /192.168.10.145 consumer-1
          fara          2          4641785         10000000        5358215         consumer-1-f9fd5d69-6ba1-4da1-9eb9-29a64a83d1fa /192.168.10.145 consumer-1
          fara          0          2377197         10000000        7622803         consumer-1-f9fd5d69-6ba1-4da1-9eb9-29a64a83d1fa /192.168.10.145 consumer-1


          fara          4          5576341         10000000        4423659         consumer-1-f9fd5d69-6ba1-4da1-9eb9-29a64a83d1fa /192.168.10.145 consumer-1
          fara          3          5738479         10000000        4261521         consumer-1-f9fd5d69-6ba1-4da1-9eb9-29a64a83d1fa /192.168.10.145 consumer-1
          fara          1          5576341         10000000        4423659         consumer-1-f9fd5d69-6ba1-4da1-9eb9-29a64a83d1fa /192.168.10.145 consumer-1
          fara          2          10000000        10000000        0               consumer-1-f9fd5d69-6ba1-4da1-9eb9-29a64a83d1fa /192.168.10.145 consumer-1
          fara          0          5739456         10000000        4260544         consumer-1-f9fd5d69-6ba1-4da1-9eb9-29a64a83d1fa /192.168.10.145 consumer-1


          fara          4          8735653         10000000        1264347         consumer-1-f9fd5d69-6ba1-4da1-9eb9-29a64a83d1fa /192.168.10.145 consumer-1
          fara          3          8825872         10000000        1174128         consumer-1-f9fd5d69-6ba1-4da1-9eb9-29a64a83d1fa /192.168.10.145 consumer-1
          fara          1          8735653         10000000        1264347         consumer-1-f9fd5d69-6ba1-4da1-9eb9-29a64a83d1fa /192.168.10.145 consumer-1
          fara          2          10000000        10000000        0               consumer-1-f9fd5d69-6ba1-4da1-9eb9-29a64a83d1fa /192.168.10.145 consumer-1
          fara          0          8827764         10000000        1172236         consumer-1-f9fd5d69-6ba1-4da1-9eb9-29a64a83d1fa /192.168.10.145 consumer-1


          fara          4          10000000        10000000        0               -               -               -
          fara          3          10000000        10000000        0               -               -               -
          fara          1          10000000        10000000        0               -               -               -
          fara          2          10000000        10000000        0               -               -               -
          fara          0          10000000        10000000        0               -               -               -

所有消息都被消费了。

第二个失败配置是下一个:

  • 5 个消费者实例(10.000.000 条记录按实例)
  • 消费者的 1 个 fetcher 线程(仅消耗一个分区)
  • 消费者组 = 所有实例的 testgroup2

我运行的命令:

$KAFKA_HOME/bin/kafka-consumer-perf-test.sh \ --新消费者\ --经纪人列表 $BROKER_LIST \ --消息 10000000 \ --消息大小 100 \ --主题法拉\ --consumer.config $KAFKA_HOME/config/consumer.ssl.properties \ --num-fetch-threads 1 \ --显示详细统计信息\ --reporting-interval $REPORT_INTERVAL \ --group testgroup2

我定期运行以下命令

./kafka-run-class.sh kafka.admin.ConsumerGroupCommand --bootstrap-server 192.168.10.10:9093 --new-consumer --describe --group testgroup2 --command-config ../config/consumer.properties

         TOPIC           PARTITION  CURRENT-OFFSET  LOG-END-OFFSET  LAG             CONSUMER-ID                                     HOST            CLIENT-ID
          fara          1          4129909         10000000        5870091         consumer-1-2e20de15-9396-4ebb-a77d-c16ef7c0cb03 /192.168.10.145 consumer-1
          fara          4          4520065         10000000        5479935         consumer-1-ed2e3f63-23e9-489a-a9bc-422e7830fc9c /192.168.10.139 consumer-1
          fara          2          4310725         10000000        5689275         consumer-1-5dbc6ec0-7bc6-4d71-8b17-1b5af261479d /192.168.10.134 consumer-1
          fara          3          4038958         10000000        5961042         consumer-1-646b2ebd-3a36-4e09-a7d4-658225492a03 /192.168.10.145 consumer-1
          fara          0          4524641         10000000        5475359         consumer-1-2a7186c9-c4a0-41d6-ba5e-809964b7b709 /192.168.10.134 consumer-1



          fara          1          6071173         10000000        3928827         consumer-1-2e20de15-9396-4ebb-a77d-c16ef7c0cb03 /192.168.10.145 consumer-1
          fara          4          6689713         10000000        3310287         consumer-1-ed2e3f63-23e9-489a-a9bc-422e7830fc9c /192.168.10.139 consumer-1
          fara          2          6437488         10000000        3562512         consumer-1-5dbc6ec0-7bc6-4d71-8b17-1b5af261479d /192.168.10.134 consumer-1
          fara          3          6194150         10000000        3805850         consumer-1-646b2ebd-3a36-4e09-a7d4-658225492a03 /192.168.10.145 consumer-1
          fara          0          6612859         10000000        3387141         consumer-1-2a7186c9-c4a0-41d6-ba5e-809964b7b709 /192.168.10.134 consumer-1


          fara          1          7489057         10000000        2510943         consumer-1-2e20de15-9396-4ebb-a77d-c16ef7c0cb03 /192.168.10.145 consumer-1
          fara          4          8212273         10000000        1787727         consumer-1-ed2e3f63-23e9-489a-a9bc-422e7830fc9c /192.168.10.139 consumer-1
          fara          2          7883485         10000000        2116515         consumer-1-5dbc6ec0-7bc6-4d71-8b17-1b5af261479d /192.168.10.134 consumer-1
          fara          3          7457277         10000000        2542723         consumer-1-646b2ebd-3a36-4e09-a7d4-658225492a03 /192.168.10.145 consumer-1
          fara          0          8039217         10000000        1960783         consumer-1-2a7186c9-c4a0-41d6-ba5e-809964b7b709 /192.168.10.134 consumer-1


          fara          2          8535701         10000000        1464299         consumer-1-5dbc6ec0-7bc6-4d71-8b17-1b5af261479d /192.168.10.134 consumer-1
          fara          3          8113576         10000000        1886424         consumer-1-5dbc6ec0-7bc6-4d71-8b17-1b5af261479d /192.168.10.134 consumer-1
          fara          0          8580780         10000000        1419220         consumer-1-2a7186c9-c4a0-41d6-ba5e-809964b7b709 /192.168.10.134 consumer-1
          fara          1          7926793         10000000        2073207         consumer-1-2a7186c9-c4a0-41d6-ba5e-809964b7b709 /192.168.10.134 consumer-1
          fara          4          8897425         10000000        1102575         consumer-1-646b2ebd-3a36-4e09-a7d4-658225492a03 /192.168.10.145 consumer-1


          fara          4          9884954         10000000        115046          consumer-1-646b2ebd-3a36-4e09-a7d4-658225492a03 /192.168.10.145 consumer-1
          fara          3          8693017         10000000        1306983         consumer-1-646b2ebd-3a36-4e09-a7d4-658225492a03 /192.168.10.145 consumer-1
          fara          1          8564365         10000000        1435635         consumer-1-646b2ebd-3a36-4e09-a7d4-658225492a03 /192.168.10.145 consumer-1
          fara          2          9197795         10000000        802205          consumer-1-646b2ebd-3a36-4e09-a7d4-658225492a03 /192.168.10.145 consumer-1
          fara          0          9217803         10000000        782197          consumer-1-646b2ebd-3a36-4e09-a7d4-658225492a03 /192.168.10.145 consumer-1


          fara          4          9942050         10000000        57950           -               -               -
          fara          3          8749827         10000000        1250173         -               -               -
          fara          1          8621461         10000000        1378539         -               -               -
          fara          2          9311260         10000000        688740          -               -               -
          fara          0          9274899         10000000        725101          -               -               -

我不明白为什么没有消耗所有记录。请问有什么帮助吗?

【问题讨论】:

  • 您正在使用外部工具来验证滞后/消耗。你的消费者流程呢?你能确认你没有收到所有的消息吗?您可以编辑您的帖子,以便显示您在消费者方面使用的代码吗?
  • @mjuarez:我添加了我在初始帖子中运行的命令。我看到客户端向我显示的统计信息中没有使用某些消息(在 5 个消费者中的 2 个)。
  • 您能解释一下“消费者的 1 个提取线程(仅消耗一个分区)”吗?在这种情况下,您将有一个消费者获取所有 5 个分区;请注意,您没有指定从哪个分区读取
  • @cricket_007:当消费者的第一个实例启动时,我可能会从所有 5 个分区中获取(如果它是唯一运行的消费者),但是当其他 4 个消费者启动时,分区应该被消费者划分,一个,最后所有的记录都应该被消费,不应该吗?
  • 对于num-fetch-threads 5,当然可以,但不仅仅适用于 1 个提取线程

标签: apache-kafka consumer


【解决方案1】:

我已经解决了在这两种情况下重新实现 1.1.0 版中的 ConsumerPerformance.scala 类的问题。

  1. 重复记录 当我同时运行 ConsumerPerformance 类的不同进程时,有时会因为这条线而看到重复(至少这是我的印象)。

https://github.com/apache/kafka/blob/1.1.0/core/src/main/scala/kafka/tools/ConsumerPerformance.scala#L161

  1. 消费者突然停止工作 超时设置为 1000,因此如果池中的消息计数超过 1 秒,则消费者停止消费。

https://github.com/apache/kafka/blob/1.1.0/core/src/main/scala/kafka/tools/ConsumerPerformance.scala#L169

【讨论】:

    猜你喜欢
    • 2019-07-03
    • 2018-05-05
    • 2021-08-22
    • 1970-01-01
    • 1970-01-01
    • 2020-10-28
    • 2015-12-18
    • 2017-01-07
    • 2018-12-04
    相关资源
    最近更新 更多