Redis持久化磁盘IO飙升,RDB/AOF参数调优降低

Redis 持久化磁盘 IO 飙升,通常表现为 redis-cli --latency 延迟突然增大、INFO stats 里 rdb_bgsave_in_progress:1 长期不结束,或者用 iostat 看到 %util 被打满。
这是 RDB 快照或 AOF 重写频繁触发的典型表现。
本文按 定位问题 → 调整参数 → 验证效果 的顺序,带你一步步把持久化 IO 压下来。

先确认 IO 压力来自 Redis 还是系统

调优之前必须确认压力来源,避免白改配置。
登录服务器后依次执行三条命令:

iostat -x 1 3

看输出里 %util 是否持续接近 100%,同时观察哪个磁盘设备(如 vda 或 sda)最忙。
接着用 iotop -o 查看实际占用 IO 的进程,确认是不是 redis-server 在刷盘。
最后进入 Redis 执行:

redis-cli INFO persistence

重点看这三项:

  • rdb_bgsave_in_progress:为 1 表示正在生成 RDB 快照
  • aof_rewrite_in_progress:为 1 表示正在做 AOF 重写
  • aof_last_bgrewrite_status:看上次重写是否成功

如果确认 Redis 刷盘期间系统 %util 明显升高,那就可以继续下面的调优。

调低 RDB 触发的频率和开销

RDB 默认配置是 save 3600 1、save 300 100、save 60 10000,意思是 60 秒内只要有 1 万次写操作就自动执行一次 bgsave。
对写入量大的业务来说,这个频率会让磁盘频繁被打满。

编辑 redis.conf,按实际写入量降低触发阈值:

save 3600 1
save 600 1000
save 300 10000

修改后重启 Redis 或执行 CONFIG REWRITE 让配置持久化。
注意:不要同时把三个 save 全注释掉,否则发生宕机时最多会丢最近的所有数据,除非你能接受。
关掉 RDB 后还想保留持久化能力,就继续调整 AOF。

如果确定保留 RDB,可改用一个独立磁盘或 SSD 存储 dump.rdb,把快照刷盘和业务读写分到不同设备,IO 抢占问题能立刻缓解。

AOF 参数调优:降低刷盘频率和重写干扰

AOF 默认 appendfsync everysec,对大多数场景已经够用。
如果 everysec 依然造成 IO 毛刺,可以改成 no,把刷盘时机交给操作系统,减少 Redis 主动 fsync 的次数:

appendfsync no

如果你的机器是 SSD 且备份压力不大,也可以继续用 everysec,但要看磁盘是否跟得上。
另外要确认 no-appendfsync-on-rewrite 是否已开启:

no-appendfsync-on-rewrite yes
auto-aof-rewrite-percentage 200
auto-aof-rewrite-min-size 512mb

no-appendfsync-on-rewrite yes 会在 AOF 重写期间暂停 fsync,避免重写和正常写入同时抢磁盘 IO。auto-aof-rewrite-percentage 从默认 100 调到 200,意味着 AOF 文件比基准大 200% 时才触发重写,这样能减少重写次数。
压力大的实例建议把 auto-aof-rewrite-min-size 也调大一些,防止小文件频繁重写。

避坑说明:这两个改动别一起做

第一,appendfsync no 和 save 全部关闭不能同时用于生产环境,否则 Redis 崩溃会丢大量数据。
如果系统允许丢一部分数据,建议至少保留一种持久化。
第二,改完参数后观察一段时间,不要只盯 1 秒的监控。
AOF 重写期间会 fork 子进程并拷贝内存页,瞬时 IO 和 CPU 升高属于正常现象,不代表调优失败。
第三,如果磁盘是机械盘,调参只是治标,最终建议换 SSD 或给 Redis 单独挂一块数据盘。

验证调优效果

重启 Redis 后,用以下方式确认压力是否下降:

iostat -x 1 30

观察 %util 是否从接近 100% 回落到安全范围。
同时在业务写入高峰期执行:

redis-cli INFO stats | grep -E 'instantaneous_ops_per_sec|total_commands_processed'

确认写入吞吐没有明显下降。
最后再跑一遍 redis-cli INFO persistence,确保 rdb_bgsave_in_progress 和 aof_rewrite_in_progress 在空闲时都快速归零,说明持久化流程已经恢复正常。

如果你遇到的 IO 飙升发生在凌晨整点或定时任务时间点,还可以回顾是否和其他备份脚本、日志切割撞在一起,错开计划任务往往比继续压低 Redis 参数更有效。
对于负载很高、无法停机的实例,建议优先调整 AOF 重写触发阈值和刷盘策略,RDB 频率谨慎降低,避免影响恢复点目标。

分享到:
上一篇
Debian系统禁用IPv6业务不需要时关闭IPv6全套配置
下一篇
KVM宿主机内核升级注意事项,升级需要重启虚拟机风险
1
系统公告

泽御云中秋国庆双节活动上线:新购8折,拼团3.99元起

尊敬的用户:
泽御云“月满中秋·礼贺国庆”双节活动现已开启,活动时间为2026年9月23日至10月10日。 活动期间可享以下福利:
1. 常规云服务器新购使用优惠码“泽御中秋国庆同乐”,符合条件的订单享8折优惠。
2. 香港精品云服务器5人拼团低至3.99元,部分4核4G套餐3人拼团年付388元,续费同价。
3. 新用户购买年付云服务器,符合活动规则可赠送2个月使用时长。
4. 老用户续费季度赠15天,续费年度赠2个月;活动期间升级配置免收配置迁移手续费。
5. 推荐好友成功下单,符合条件的推荐人可获赠7天服务器使用时长。
6. 活动期间享宕机补偿标准翻倍、简单网站迁移协助及技术工单优先处理权益。
温馨提示:优惠码不适用于拼团套餐、活动轻量产品、年付订单及续费订单;拼团套餐为独立特价活动,不与赠时类福利叠加。赠送时长不可折现、退款或跨账户转移,具体规则以活动页面说明为准。
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意