Kafka分区滞后增加

时间:2017-11-15 10:45:44

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

我有一个使用Kafka 1.0作为队列的应用程序。 Kafka主题有80个分区和80个消费者正在运行。 (Kafka-python消费者)。

运行命令:

./bin/kafka-consumer-groups.sh --bootstrap-server localhost:9092 --group mygroup  --describe 

我看到其中一个分区卡在偏移处,并且滞后会随着新记录的添加而不断增加。

上述命令的输出如下所示:

TOPIC                          PARTITION  CURRENT-OFFSET  LOG-END-OFFSET  LAG        CONSUMER-ID                                       HOST

118 mytopic                       37         1924            2782            858        kafka-python-1.3.4-3da99d4d-63e8-4e72-967e-xxxxxxxxxxx/localhost
119 mytopic                       38         2741            2742            1          kafka-python-1.3.4-40b44482-39fc-42d0-8f55-xxxxxxxxxxx/localhost
120 mytopic                       39         2713            2713            0          kafka-python-1.3.4-4121d080-1d7c-4d6b-ac58-xxxxxxxxxxx/localhost
121 mytopic                       40         2687            2688            1          kafka-python-1.3.4-43441f6e-fd35-448e-b791-xxxxxxxxxxx/localhost

是什么原因引起的?也不希望使用reset-offsets命令重置偏移量,因为可能不会定期手动监视此服务器。

客户端在后台作为Linux m / c中的并行进程运行:

consumer = KafkaConsumer('mytopic', group_id='mygroup', bootstrap_servers='localhost:9092',
                     session_timeout_ms=120000, heartbeat_interval_ms=100000, max_poll_records=1,
                     auto_commit_interval_ms=100000, request_timeout_ms=350000, max_partition_fetch_bytes=3*1024*1024,
                     value_deserializer=lambda m: json.loads(m.decode('ascii')))

for message in consumer:
    msg = json.loads(message.value)
    process_message(msg)

1 个答案:

答案 0 :(得分:2)

  

如果消费者抵消在一段时间后没有移动,那么消费者就是   可能已经停止了。如果消费者抵消正在移动,但消费者滞后   (日志结束与消费者偏移之间的差异)是   增加,消费者比生产者慢。如果是消费者   很慢,典型的解决方案是增加并行度   在消费者中。这可能需要增加分区数量   一个主题。

在Kafka docs了解更多信息。

简单地说;你生产的东西比你消耗的多。您需要提高消费率以减少滞后。您需要添加更多消费者。如果您只是进行测试,那么您的消费者就会很慢。