Redis 的 RDB 快照通过 fork() 创建子进程进行 Copy-On-Write 写时复制,AOF 重写同样依赖子进程。虽然主线程不直接参与磁盘 I/O,但 fork() 的页表复制与 COW 期间的内存页拷贝会在高写入负载下造成明显的主线程延迟抖动。
一、持久化关键配置与延迟观测
ini
# 关闭自动 RDB,改由运维在低峰期触发
save ""
# 开启 AOF 并采用 everysec 折中策略
appendonly yes
appendfsync everysec
# AOF 重写期间不阻塞 fsync,降低写延迟
no-appendfsync-on-rewrite yes
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mbbash
# 观测 fork 耗时与 COW 内存
redis-cli info stats | grep -E "latest_fork_usec"
redis-cli info memory | grep -E "used_memory_rss|mem_fragmentation_ratio"