在使用Docker安装RocketMQ时,启动Broker进程被Killed通常是由于容器内内存不足导致的。
Docker默认分配的内存可能无法满足RocketMQ Broker的运行需求,尤其是当消息累积或配置较大内存使用场景时。

解决方法如下:

  1. 调整Docker资源限制:
    通过docker run命令添加–memory参数,为容器分配更多内存,例如–memory=4g。
  2. 优化RocketMQ配置:
    降低brokerRole(如设置为Slave)、减少flushDiskType为异步刷盘,或者调小mapedFileSize等内存相关参数。
  3. 检查宿主机资源:
    确保宿主机本身有足够的空闲内存,避免因系统级内存压力触发Killed。
  4. 使用cgroups调试:
    通过dmesg | grep -i killed确认是否为OOM(Out of Memory)问题,并根据提示进一步优化资源配置。

》dmesg | grep -i killed
UID:3000是linux用户rocketmq的用户id

[1141614.669057] Memory cgroup out of memory: Killed process 2681296 (java) total-vm:3028692kB, anon-rss:2091776kB, file-rss:9856kB, shmem-rss:0kB, UID:3000 pgtables:4268kB oom_score_adj:0
[1141653.757190] Memory cgroup out of memory: Killed process 2681946 (java) total-vm:3028692kB, anon-rss:2091776kB, file-rss:9856kB, shmem-rss:0kB, UID:3000 pgtables:4264kB oom_score_adj:0
[1141676.691178] Memory cgroup out of memory: Killed process 2682423 (java) total-vm:3028692kB, anon-rss:2091776kB, file-rss:9856kB, shmem-rss:0kB, UID:3000 pgtables:4272kB oom_score_adj:0

本次则修改docker compose的broker部分的内存配置。

broker-master1:
    deploy:
        resources:
            limits:
                memory: 2G

改成:

broker-master1:
    deploy:
        resources:
            limits:
                memory: 4G

在这里插入图片描述
参考:
https://ask.csdn.net/questions/8210182

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐