【发布时间】:2022-11-04 20:10:30
【问题描述】:
我使用 Docker Compose 在 Docker 中的 M1 Macbook 上本地运行 Kafka 和 Zookeeper (bitnami)。如果我删除 Kafka 和 Zookeeper 的数据卷并重新启动,它会完美地重新启动并以低 CPU 利用率运行。
我有大约 6 个不同的消费者组和 2 个生产者,它们都在 Mac 上本地运行,它们是不同的 Node JS 脚本。一切都很好,直到我停止消费者,然后关闭并重新启动 docker 容器(Ctrl-C 停止,然后是 Docker Compose Up)。
当我这样做时,一切看起来都可以重新启动,但是生产者和消费者会收到 Connection Refused 错误(尽管有时会连接,但不要保持连接)。 Kafka 或 Zookeeper 日志中没有错误或警告,但是当我查看 Kafka 的容器时,Docker 报告它正在以 100% 的 CPU 利用率运行。我可以把它留下来,它会在那个利用率水平上度过。
我总是可以通过停止容器并删除与 Kafka 和 Zookeeper 关联的卷来解决这个问题。但是,它为什么要这样做?为什么每次我停止并重新启动 Kafka 时它都会卡在 100% CPU 上?
这些是我的 docker-compose.yml 文件的相关部分:
version: '3.8'
services:
zookeeper:
container_name: zookeeper
image: 'bitnami/zookeeper'
pull_policy: always
environment:
ALLOW_ANONYMOUS_LOGIN: yes
ZOOKEEPER_CLIENT_PORT: 2181
ZOOKEEPER_TICK_TIME: 2000
ports:
- '2181:2181'
volumes:
- /Users/localuser/Documents/MintMonsterData/zookeeper:/bitnami/zookeeper
kafka:
container_name: kafka
pull_policy: always
image: 'bitnami/kafka'
restart: always
ports:
- '29092:29092'
environment:
KAFKA_CFG_ADVERTISED_HOST_NAME: kafka
KAFKA_BROKER_ID: 1
KAFKA_CFG_ZOOKEEPER_CONNECT: zookeeper:2181
KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP: CLIENT:PLAINTEXT,EXTERNAL:PLAINTEXT
KAFKA_CFG_LISTENERS: CLIENT://:9092,EXTERNAL://:29092
KAFKA_CFG_ADVERTISED_LISTENERS: CLIENT://kafka:9092,EXTERNAL://localhost:29092
KAFKA_CFG_INTER_BROKER_LISTENER_NAME: CLIENT
KAFKA_CFG_LOG_RETENTION_HOURS: 24
ALLOW_PLAINTEXT_LISTENER: yes
KAFKA_CFG_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
volumes:
- /Users/localuser/Documents/MintMonsterData/kafka:/bitnami/kafka
depends_on:
- zookeeper
【问题讨论】:
-
请阅读 Docker 标签的描述。
标签: docker apache-kafka apache-zookeeper apple-m1 bitnami