You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

首次使用Confluent时Docker中Broker进程以137退出码终止的解决方法

Confluent Broker Docker启动后退出码137的解决方法

退出码137的核心原因是进程被系统发送的SIGKILL信号终止,绝大多数情况是内存资源不足触发了OOM(Out-of-Memory) Killer。以下是具体解决步骤:

  • 调整Docker容器内存配额
    Confluent Broker(尤其是带Confluent平台其他组件的镜像)默认需要的内存比Docker默认分配的多。启动容器时直接指定内存和CPU限制:
docker run -d --name confluent-broker --memory=4g --cpus=2 confluentinc/cp-kafka:latest

如果用Docker Compose,在broker服务配置里添加资源限制:

services:
  broker:
    image: confluentinc/cp-kafka:latest
    deploy:
      resources:
        limits:
          memory: 4g
          cpus: '2'
  • 降低Kafka的JVM堆内存配置
    Confluent Kafka默认的JVM堆内存设置可能过高,超出容器可用内存。通过环境变量调整堆大小:
docker run -d --name confluent-broker -e KAFKA_HEAP_OPTS="-Xmx2g -Xms1g" confluentinc/cp-kafka:latest

Docker Compose的配置方式:

services:
  broker:
    image: confluentinc/cp-kafka:latest
    environment:
      KAFKA_HEAP_OPTS: "-Xmx2g -Xms1g"

注意:JVM堆内存建议不超过容器分配内存的70%,避免内存溢出。

  • 检查宿主机内存状态
    用free -h命令查看宿主机剩余内存,如果宿主机本身内存不够,要么关闭其他高内存占用进程,要么升级宿主机内存。

  • 临时禁用OOM Killer(仅用于排查)
    如果想确认是不是OOM导致的,可以临时给Broker进程设置OOM优先级:

  1. 用docker inspect --format '{{.State.Pid}}' confluent-broker获取容器进程ID
  2. 执行echo -17 > /proc/<pid>/oom_adj
    注意:这个操作会让该进程在内存不足时优先被保留,但可能导致其他进程被终止,不建议长期使用。

内容的提问来源于stack exchange,提问作者idan ahal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 09:01:01