你的 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

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐