首页/数据/Redis 进阶速查/vm.overcommit_memory 与后台保存
本包目录(421 条)
数据结构与选型42 条
持久化56 条
主从与哨兵51 条Cluster 集群44 条内存与管理99 条性能与排障129 条

vm.overcommit_memory 与后台保存

fork 大实例时父进程可能因内核内存策略拒绝分配,导致 BGSAVE 失败;官方建议设置 vm.overcommit_memory=1,允许内核对 fork 场景的地址空间承诺。

Redis 进阶速查数据更新于 2026-10-12
推荐值vm.overcommit_memory=1
症状日志出现 Can't save in background: fork: Cannot allocate memory
生效sysctl 或 /etc/sysctl.conf

设置与核对

设置与核对
sysctl vm.overcommit_memory
sysctl -w vm.overcommit_memory=1
echo vm.overcommit_memory=1 >> /etc/sysctl.conf
该参数并不改变实际内存用量,只是让 fork 时不会因过度承诺检查直接失败;COW 峰值仍需真实内存支撑。

易错点

  • 只改运行中参数不写配置文件,重启后失效问题会复现
  • 设为 1 后要更加关注真实内存余量与 swap,避免 OOM 直接杀进程

数据来源与参考

  • Redis 官方文档:redis.conf 关于 overcommit 的说明
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌