Apache kafka 卡夫卡消费群体
我在使用卡夫卡时遇到了一些问题。非常感谢您的帮助! 我在docker swarm中有zookeeper和kafka群集3个节点。您可以在下面看到Kafka broker配置Apache kafka 卡夫卡消费群体,apache-kafka,spring-kafka,Apache Kafka,Spring Kafka,我在使用卡夫卡时遇到了一些问题。非常感谢您的帮助! 我在docker swarm中有zookeeper和kafka群集3个节点。您可以在下面看到Kafka broker配置 KAFKA_DEFAULT_REPLICATION_FACTOR: 3 KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 3 KAFKA_MIN_INSYNC_REPLICAS: 2 KAFKA_NUM_PARTITIONS: 8 KAFKA_REPLICA_SOCKET_T
KAFKA_DEFAULT_REPLICATION_FACTOR: 3
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 3
KAFKA_MIN_INSYNC_REPLICAS: 2
KAFKA_NUM_PARTITIONS: 8
KAFKA_REPLICA_SOCKET_TIMEOUT_MS: 30000
KAFKA_REQUEST_TIMEOUT_MS: 30000
KAFKA_COMPRESSION_TYPE: "gzip"
KAFKA_JVM_PERFORMANCE_OPTS: "-XX:+UseG1GC -XX:MaxGCPauseMillis=20 -XX:InitiatingHeapOccupancyPercent=35 -XX:G1HeapRegionSize=16M -XX:MinMetaspaceFreeRatio=50 -XX:MaxMetaspaceFreeRatio=80"
KAFKA_HEAP_OPTS: "-Xmx768m -Xms768m -XX:MetaspaceSize=96m"
我的情况是:
- 20位制作人不断向卡夫卡主题发送信息
- 1x消费者读取和记录消息
- 杀死kafka节点(docker容器停止),所以现在集群有2个kafka代理节点(第3个将自动启动并加入集群)
- 消费者不再消费信息,因为它因重新平衡而离开了消费者群体
@Rostyslav每当消费者打电话阅读信息时,它都会打两个主要的电话
为了克服这个问题,我们需要改变两个变量中的一个。更改最大轮询间隔可能会非常繁忙,因为有时处理某些记录可能需要更长的时间,有时处理较少的记录可能需要更长的时间。我总是建议玩max_poll_唱片来解决这个问题。这对我来说很有用。@Rostyslav每当消费者打电话来阅读信息时,它会打两个主要的电话
为了克服这个问题,我们需要改变两个变量中的一个。更改最大轮询间隔可能会非常繁忙,因为有时处理某些记录可能需要更长的时间,有时处理较少的记录可能需要更长的时间。我总是建议玩max_poll_唱片来解决这个问题。这对我有效。增加max.poll.interval.ms值。由于在重新平衡期间无法轮询,您的最后一次心跳大于间隔值,因此集群认为您已死亡,并将您踢出。这是我的两分钱。但是如何猜出正确的间隔呢?当我需要增加它时,总是会出现这种情况。然后将它增加到一个非常高的值。“正常执行”期间对流程没有影响。至少,将其增加到再平衡操作所需的最大时间。但正如我所说,这只是一个猜测。。。也许您的问题来自其他方面谢谢,我将尝试增加max.poll.interval.ms值。由于在重新平衡期间无法轮询,您的最后一次心跳大于间隔值,因此集群认为您已死亡,并将您踢出。这是我的两分钱。但是如何猜出正确的间隔呢?当我需要增加它时,总是会出现这种情况。然后将它增加到一个非常高的值。“正常执行”期间对流程没有影响。至少,将其增加到再平衡操作所需的最大时间。但正如我所说,这只是一个猜测。。。也许你的问题来自其他方面谢谢,我会努力的
INFO 1 --- [ | loggingGroup] o.a.k.c.c.internals.AbstractCoordinator : [Consumer clientId=kafka-consumer-0, groupId=loggingGroup] Attempt to heartbeat failed since group is rebalancing
WARN 1 --- [ | loggingGroup] o.a.k.c.c.internals.AbstractCoordinator : [Consumer clientId=kafka-consumer-0, groupId=loggingGroup] This member will leave the group because consumer poll timeout has expired. This means the time between subsequent calls to poll() was longer than the configured max.poll.interval.ms, which typically implies that the poll loop is spending too much time processing messages. You can address this either by increasing max.poll.interval.ms or by reducing the maximum size of batches returned in poll() with max.poll.records.