这个警告信息表明 Redis 检测到系统的内存 overcommit 设置未启用,这可能会影响 Redis 的持久化操作(如 RDB 快照或 AOF 重写)或主从复制功能。以下是解决方案和详细说明:
1. 问题原因
Redis 依赖操作系统的内存分配机制。当 vm.overcommit_memory
设置为 0
(默认值)时,内核会尝试评估剩余内存是否足够分配,可能导致 Redis 在内存不足时后台保存(BGSAVE)或复制失败。
2. 解决方法
临时生效(重启后失效)
sudo sysctl vm.overcommit_memory=1
永久生效
编辑 /etc/sysctl.conf
文件,添加以下配置:
sudo echo "vm.overcommit_memory = 1" >> /etc/sysctl.conf
然后加载配置:
sudo sysctl -p
3. 参数解释
vm.overcommit_memory = 1
:
允许内核超额分配内存,即使物理内存不足也会分配成功。这对 Redis 的持久化操作至关重要。其他可选值:
0
(默认):启发式 overcommit,可能拒绝大块内存申请。2
:禁止超过swap + RAM × overcommit_ratio
的内存分配。
4. Redis 相关建议
- 额外优化:
如果服务器专门运行 Redis,建议同时调整以下内核参数: “`bash echo “net.core.somaxconn = 1024” | sudo tee -a /etc/sysctl.conf echo “kernel.panic_on_oom = 0” | sudo tee -a /etc/sysctl.conf
内容由零声教学AI助手提供,问题来源于学员提问