首页/数据/数据库速查/BGSAVE 的 fork 与写时复制(COW)
本包目录(495 条)
MySQL 基础与连接36 条SQL 语法52 条用户与权限21 条备份与恢复56 条主从复制与高可用53 条性能与调优57 条Redis 命令96 条
Redis 运维与场景124 条

BGSAVE 的 fork 与写时复制(COW)

BGSAVE 靠 fork 复制页表 + 写时复制:内存页被改写时才复制,所以写入量大时 COW 内存峰值会接近翻倍。

数据库速查数据更新于 2026-10-12
fork 耗时与页表大小相关,大内存实例可达数百毫秒
COW 放大快照期间写入越多,复制页越多,内存与 IO 压力越大
关键指标latest_fork_usec、used_memory 峰值

观察 fork 与快照开销

观察 fork 与快照开销
INFO stats | grep latest_fork_usec     # 最近一次 fork 微秒数
INFO persistence | grep rdb              # rdb_last_cow_size 等
INFO memory | grep used_memory_peak
# 降低 fork 影响的常见做法:
# 1) 关闭 THP(透明大页):echo never > /sys/kernel/mm/transparent_hugepage/enabled
# 2) 预留内存余量,maxmemory 不要贴近物理内存
大实例 fork 卡顿常见于 master 的定时快照;把 RDB 快照尽量安排到低峰或交给从库承担(从库开快照、主库关或调疏)。

易错点

  • THP 开启导致 fork 与 COW 放大数倍:大内存实例必须先关
  • 内存打满 100% 才快照:fork 需要额外内存,直接触发 OOM/swap

数据来源与参考

  • Redis 官方文档: 持久化(fork 与 COW)
  • Redis 官方文档: INFO stats

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌