redis docker 运行报错 The TCP backlog setting of 511 cannot be enforced ignore-warnings ARM6-COM-BUG

你的 Redis 容器启动时报了两个典型警告问题,分别是:


💥 问题 1:/proc/sys/net/core/somaxconn 设置太小

 

复制编辑

WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.

含义: Redis 默认希望 backlog 至少是 511,但你的内核参数 somaxconn 只有 128,不够用。

解决方法: 在宿主机执行以下命令提升这个内核参数值:

复制编辑

echo 511 > /proc/sys/net/core/somaxconn

为了永久生效:
编辑 /etc/sysctl.conf,添加:

复制编辑

net.core.somaxconn = 511

然后执行:

复制编辑

sysctl -p

💥 问题 2:ARM64 内核 BUG 警告

WARNING Your kernel has a bug that could lead to data corruption during background save. Please upgrade to the latest stable kernel. ... ARM64-COW-BUG

含义: 你当前使用的 ARM64 架构 Linux 内核存在一个 COW(Copy-On-Write)相关的 bug,可能在 Redis 执行 RDB 或 AOF 持久化时导致数据损坏。

解决方法:

✅ 临时忽略(不推荐正式环境)

如果你确定你的业务不依赖持久化(或你愿意冒风险),可以让 Redis 启动时忽略这个警告:

修改 Redis 配置文件(或 Docker 启动参数)添加:

ignore-warnings ARM64-COW-BUG

比如 docker-compose 可以这样:

yaml

复制编辑

command: ["redis-server", "--ignore-warnings", "ARM64-COW-BUG"]
✅ 推荐方法:升级内核(正式方案)

使用已修复该 bug 的新内核版本。你可以查看当前内核版本:

复制编辑

uname -a

然后去对应 Linux 发行版查看是否有修复版本,比如 Ubuntu 可用 apt 升级内核。


✅ 总结

问题建议
somaxconn 太小echo 511 > /proc/sys/net/core/somaxconn,并修改 /etc/sysctl.conf
ARM64 内核 bug临时加 --ignore-warnings ARM64-COW-BUG;推荐升级内核

 

docker-compose.yml

version: '3.8'

services:
  redis:
    image: redis:6.2.17
    container_name: redis
    command: ["redis-server", "--ignore-warnings", "ARM64-COW-BUG"]
    sysctls:
      net.core.somaxconn: "511"
    ports:
      - "6379:6379"
    restart: unless-stopped

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值