0

0

Redis如何监控RDB的执行状态_通过INFO Persistence命令查看bgsave指标

P粉602998670

P粉602998670

发布时间:2026-03-19 11:51:50

|

232人浏览过

|

来源于php中文网

原创

rdb_bgsave_in_progress是唯一实时反映RDB是否正在执行的字段;rdb_last_save_time为上次成功时间戳;rdb_last_bgsave_status仅记录最近一次结果(ok/err),不体现过程。

redis如何监控rdb的执行状态_通过info persistence命令查看bgsave指标

INFO Persistence里哪些字段对应RDB保存状态

Redis 的 INFO Persistence 输出中,真正反映 RDB 持久化执行状态的只有几个关键字段,不是所有带 “bgsave” 的都实时有效。rdb_bgsave_in_progress 是唯一能即时判断当前是否有 SAVEBGSAVE 正在运行的布尔值;rdb_last_save_time 是上一次成功完成的时间戳(秒级),不是开始时间;rdb_last_bgsave_status 只记录最近一次结果(okerr),不反映中间过程。

常见错误现象:看到 rdb_last_bgsave_time 很久没更新,就以为 RDB 卡住了——其实它只在成功时才写入,失败或被中断都不会更新,不能用来判断“是否正在执行”。

  • rdb_bgsave_in_progress1 才代表真正在 fork + 写盘
  • rdb_last_bgsave_statuserr 时,必须结合 redis.log 查具体错误(比如磁盘满、fork 失败、权限不足)
  • rdb_last_bgsave_timeunixtime 对比,可算出距上次成功多久,但无法反推本次是否超时

为什么rdb_bgsave_in_progress有时卡在1不动

这个字段卡在 1 不变,大概率是子进程卡在写文件阶段,而不是 fork 阶段。Redis fork 后,父进程立刻返回,rdb_bgsave_in_progress 就设为 1;但子进程实际写 RDB 文件可能因 I/O 延迟、磁盘打满、文件系统锁、SELinux 限制等卡住,此时父进程无法感知,也就不会重置该字段。

典型场景:云主机挂载的网络盘(如 AWS EBS gp2 在突发 I/O 耗尽后)、容器内挂载的 NFS 卷、或 ulimit -n 设置过低导致 open() 失败但未及时退出。

  • ps aux | grep redis 看是否存在 redis-server *:6379 [bgsave] 进程且长时间存在
  • 检查 /proc/<pid>/stack(需 root)确认子进程卡在哪个系统调用(如 sys_writedo_sync_read
  • 对比 redis-cli info stats | grep expiredredis-cli info memory | grep mem,若 expired_keys 暴涨或 used_memory_rss 远大于 used_memory,可能是内存碎片+写放大加剧 I/O 压力

INFO Persistence不显示失败原因,怎么快速定位bgsave err

INFO Persistence 里的 rdb_last_bgsave_status:err 是个终点提示,不是诊断入口。它不包含 errno、路径、或上下文,必须依赖外部线索交叉验证。

WisPaper
WisPaper

复旦大学研发的AI学术搜索工具,5分钟内筛选1000篇论文

下载

最直接的方式是查 Redis 日志——但要注意默认日志级别是 notice,fork 失败、write 错误等关键信息只在 verbosedebug 级别输出。生产环境一般不开 debug,所以得提前配置好。

  • 临时提级日志:redis-cli config set loglevel verbose,再触发一次 bgrewriteaofsave 观察
  • 检查 rdb_last_bgsave_timeredis-cli time 差值,若接近 timeout 配置(如 60 秒),很可能是 write 阻塞超时
  • 确认 dir 配置路径是否可写:redis-cli config get dir → 在对应目录下 touch test.$$ && rm test.$$
  • 注意 stop-writes-on-bgsave-error yes 开启时,写入会直接拒绝,此时 redis-cli info stats | grep rejected 会非零

监控脚本里别只看rdb_last_bgsave_time是否更新

很多运维脚本用 rdb_last_bgsave_time 和当前时间差是否超阈值来告警,这会漏掉“一直在执行但卡死”的情况。真正可靠的监控组合是:rdb_bgsave_in_progress == 1 持续超过 300 秒,且 rdb_last_bgsave_status == ok 长期未变——前者说明卡在写盘,后者说明没有新成功记录兜底。

另外,INFO Persistence 本身不包含耗时统计,Redis 也不暴露单次 bgsave 的 wall clock 时间。想量化性能,只能靠外部计时器 wrap redis-cli save,或者用 strace -p <redis-pid> -e trace=write,fsync 抓系统调用耗时(仅调试用)。

  • 告警逻辑应同时检查:rdb_bgsave_in_progressrdb_last_bgsave_status 的组合状态
  • 避免用 rdb_changes_since_last_save 做 RDB 触发依据——它只在 save 配置项触发时递增,手动 bgrewriteaofsave 不影响它
  • 如果用 Redis 6.0+,可开启 activedefrag,但注意内存碎片整理会显著延长 bgsave 子进程生命周期,监控阈值要相应放宽

真正难的是区分“慢”和“死”:一个花了 400 秒的 bgsave,可能是大实例配了慢盘,也可能是卡死。得靠 ps + /proc/pid/stack + iostat -x 1 三者对齐才能下结论。

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

WorkBuddy
WorkBuddy

腾讯云推出的AI原生桌面智能体工作台

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
scripterror怎么解决
scripterror怎么解决

scripterror的解决办法有检查语法、文件路径、检查网络连接、浏览器兼容性、使用try-catch语句、使用开发者工具进行调试、更新浏览器和JavaScript库或寻求专业帮助等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

533

2023.10.18

500error怎么解决
500error怎么解决

500error的解决办法有检查服务器日志、检查代码、检查服务器配置、更新软件版本、重新启动服务、调试代码和寻求帮助等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

385

2023.10.25

常用的数据库软件
常用的数据库软件

常用的数据库软件有MySQL、Oracle、SQL Server、PostgreSQL、MongoDB、Redis、Cassandra、Hadoop、Spark和Amazon DynamoDB。更多关于数据库软件的内容详情请看本专题下面的文章。php中文网欢迎大家前来学习。

1011

2023.11.02

内存数据库有哪些
内存数据库有哪些

内存数据库有Redis、Memcached、Apache Ignite、VoltDB、TimesTen、H2 Database、Aerospike、Oracle TimesTen In-Memory Database、SAP HANA和ache Cassandra。更多关于内存数据库相关问题,详情请看本专题下面的文章。php中文网欢迎大家前来学习。

675

2023.11.14

mongodb和redis哪个读取速度快
mongodb和redis哪个读取速度快

redis 的读取速度比 mongodb 更快。原因包括:1. redis 使用简单的键值存储,而 mongodb 存储 json 格式的数据,需要解析和反序列化。2. redis 使用哈希表快速查找数据,而 mongodb 使用 b-tree 索引。因此,redis 在需要高性能读取操作的应用程序中是一个更好的选择。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

501

2024.04.02

redis怎么做缓存服务器
redis怎么做缓存服务器

redis 作为缓存服务器的答案:redis 是一款开源、高性能、分布式的键值存储,可作为缓存服务器使用。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

416

2024.04.07

redis怎么解决数据一致性
redis怎么解决数据一致性

redis 提供了两种一致性模型,以维护副本数据一致性:强一致性 (sync) 确保写操作仅在复制到所有从节点后才完成;最终一致性 (async) 则在主节点上写操作后认为已完成,牺牲一致性换取性能。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

410

2024.04.07

mysql和redis怎么保证双写一致性
mysql和redis怎么保证双写一致性

确保 mysql 和 redis 双写一致性的技术包括:1、事务性更新:同时更新 mysql 和 redis,保证一致性;2、主从复制:mysql 主服务器更改同步到 redis 从服务器;3、基于事件的更新:mysql 记录更改并发送到 redis等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

484

2024.04.07

bootstrap安装教程
bootstrap安装教程

本专题整合了bootstrap安装相关教程,阅读专题下面的文章了解更多详细操作教程。

22

2026.03.18

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号