当前位置:首页 > 文章列表 > 数据库 > Redis > Redis AOF 重写期间延迟升高怎么判断

Redis AOF 重写期间延迟升高怎么判断

来源:17golang原创 2026-10-14 10:00:06 0浏览 收藏

Redis 在 AOF 重写期间出现延迟升高,通常不能简单归因于“重写把 Redis 卡住了”。需要先确认重写是否正在进行,再把压力拆成 fork、写时复制(COW)、AOF 写入和 fsync。aof_rewrite_in_progress 只能说明状态,不能单独证明根因。

官方地址:https://redis.io/

最小排查顺序是:先看 INFO persistence,再对照 current_cow_size、aof_pending_bio_fsync、aof_delayed_fsync 和 Redis 延迟事件。重写结束后,再用 aof_last_bgrewrite_status 确认结果。

先确认延迟发生在 AOF 重写窗口

先抓取持久化区,而不是马上手动执行新的重写命令。下面的输出只用于观察当前实例状态:

# 查看 AOF 重写、耗时、COW 和 fsync 排队状态
redis-cli INFO persistence | grep -E 'aof_rewrite_in_progress|aof_rewrite_scheduled|aof_current_rewrite_time_sec|current_cow_size|current_fork_perc|aof_pending_bio_fsync|aof_delayed_fsync|aof_last_bgrewrite_status'

# 间隔采样,比较重写状态与延迟曲线是否同时变化
watch -n 1 "redis-cli INFO persistence | grep -E 'aof_rewrite_in_progress|current_cow_size|aof_pending_bio_fsync|aof_delayed_fsync'"

重点看三个组合:重写进行中且 current_cow_size 持续变大,往往意味着写入造成的内存页复制压力;aof_pending_bio_fsync 或 aof_delayed_fsync 增长,说明写盘或同步出现排队;若这些值稳定而延迟仍升高,就要把注意力转向命令执行、网络或宿主机资源。

Redis AOF 重写状态、COW 内存和 fsync 指标的静态关系说明图
图1:AOF 重写状态与内存、写盘指标的结构说明图,不是运行截图或性能实测。

把“重写变慢”拆成四类证据

Redis 官方的持久化信息把重写过程拆成了几个可观察的面。aof_current_rewrite_time_sec 用来表示当前重写耗时,aof_last_rewrite_time_sec 可以与历史窗口比较;current_fork_perc 和 current_cow_size 则帮助判断 fork 后的页复制压力。

如果延迟尖峰和 aof_delayed_fsync 同步出现,应优先检查磁盘延迟、文件系统拥塞和 fsync 策略。若 COW 变大但 fsync 排队不明显,应检查实例内存余量、写入速率和 fork 时的内存压力。不要把 aof_rewrite_buffer_length 当成所有版本都存在的指标,Redis 7.0 起该字段已移除。

还可以使用 Redis 延迟监控关注 fork、aof-write、aof-write-pending-fsync、aof-rename 和 aof-rewrite-diff-write 等事件。它们比单一的平均响应时间更适合判断延迟究竟发生在进程创建、写入、同步还是重写收尾。

Redis AOF 延迟证据与排查分支的静态关系说明图
图2:延迟证据与处理边界的关系说明图,展示观察对象之间的静态对应关系。

正在重写和已经结束,处理方式不同

如果 aof_rewrite_in_progress=1,不要因为业务延迟升高就连续执行 BGREWRITEAOF。已有重写时,命令不会替你排队出第二个重写;Redis 也会避免 AOF 重写与另一个持久化后台任务同时进行。此时应记录采样、确认磁盘和内存余量,并减少会放大压力的并发操作。

如果重写已经结束,先看 aof_last_bgrewrite_status 是否为 ok,再对照 aof_last_rewrite_time_sec 和业务延迟是否回落。状态正常但延迟不回落,说明 AOF 重写可能只是同窗发生的现象,继续排查慢命令、网络、CPU steal 或磁盘整体负载。

# 重写结束后只做结果确认,不重复触发重写
redis-cli INFO persistence | grep -E 'aof_rewrite_in_progress|aof_rewrite_scheduled|aof_last_bgrewrite_status|aof_last_rewrite_time_sec'

# 查看 Redis 延迟事件,帮助区分写盘与 fork 影响
redis-cli LATENCY LATEST

常见误区与排查清单

现象优先看什么不要直接做什么
重写中延迟上升COW、fork、fsync 排队不要连续触发 BGREWRITEAOF
fsync 计数增加磁盘延迟与同步策略不要只看 CPU 使用率
重写结束仍慢慢命令、网络和宿主机负载不要把所有问题归给 AOF

归纳起来,AOF 重写期间的延迟定位要把“状态”与“原因”分开:状态由 INFO persistence 确认,原因由 COW、fsync、fork 和延迟事件共同判断。这样既能避免误停持久化,也能在重写完成后及时发现真正的业务瓶颈。

相关问题

AOF 重写会阻塞 Redis 吗?

重写在后台生成新文件,但 fork、写入、同步和收尾仍可能带来延迟。是否明显取决于数据规模、写入量、内存和磁盘。

为什么重写结束了延迟还没有恢复?

重写可能只是时间上的伴随现象。应比较重写状态与延迟事件,并继续检查慢命令、网络和宿主机资源。

版本声明
本文转载于:17golang原创 如有侵犯,请联系study_golang@163.com删除
Redis Cluster 多键命令为什么报 CROSSSLOTRedis Cluster 多键命令为什么报 CROSSSLOT
上一篇
Redis Cluster 多键命令为什么报 CROSSSLOT
Redis RDB 和 AOF 如何按恢复目标选择
下一篇
Redis RDB 和 AOF 如何按恢复目标选择
查看更多
最新文章
查看更多
课程推荐
  • 前端进阶之JavaScript设计模式
    前端进阶之JavaScript设计模式
    设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
    543次学习
  • GO语言核心编程课程
    GO语言核心编程课程
    本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
    516次学习
  • 简单聊聊mysql8与网络通信
    简单聊聊mysql8与网络通信
    如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
    500次学习
  • JavaScript正则表达式基础与实战
    JavaScript正则表达式基础与实战
    在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
    487次学习
  • 从零制作响应式网站—Grid布局
    从零制作响应式网站—Grid布局
    本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
    485次学习
查看更多
AI推荐
  • PubMedQA数据集详解:生物医学问答基准、功能与应用指南
    PubMedQA
    深入了解PubMedQA生物医学问答数据集,涵盖其核心功能、使用方法及在临床决策、药物研发等场景的应用,助力提升NLP模型性能。
    467次使用
  • H2O EvalGPT:开源LLM大模型评估与排行榜工具
    H2O EvalGPT
    H2O EvalGPT是H2O.ai推出的开源LLM评估平台,提供详细的大模型性能排行榜、行业特定基准测试及A/B测试功能,助您快速选择最适合项目的高性能大语言模型。
    530次使用
  • LMArena是什么?伯克利AI模型评估平台使用指南与功能解析
    LMArena
    LMArena是加州大学伯克利分校推出的AI模型匿名评测平台。通过盲测投票机制,用户可对比不同大模型回答并生成实时排行榜,助力开发者优化模型及用户选择最佳AI工具。
    548次使用
  • 斯坦福HELM:大语言模型Holistic Evaluation整体评估框架详解
    HELM
    深入了解斯坦福推出的HELM(Holistic Evaluation of Language Models)大模型评测体系。本文解析其核心功能、安装配置步骤及应用场景,涵盖准确性、公平性、鲁棒性等多维度指标,助力开发者全面优化语言模型性能。
    497次使用
  • MMBench详解:多模态大模型基准测试、功能特点与使用指南
    MMBench
    MMBench是由上海人工智能实验室等机构联合推出的多模态基准测试平台,提供细粒度能力评估、大规模数据集及VLMEvalKit工具。本文详细介绍其核心功能、安装使用方法及应用场景,助力开发者全面评估多模态模型性能。
    317次使用
微信登录更方便
  • 密码登录
  • 注册账号
登录即同意 用户协议 和 隐私政策
返回登录
  • 重置密码