惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

博客园 - Franky
N
Netflix TechBlog - Medium
Google Online Security Blog
Google Online Security Blog
月光博客
月光博客
量子位
酷 壳 – CoolShell
酷 壳 – CoolShell
V
V2EX
腾讯CDC
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
博客园 - 聂微东
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
M
MIT News - Artificial intelligence
Vercel News
Vercel News
The GitHub Blog
The GitHub Blog
Hugging Face - Blog
Hugging Face - Blog
博客园 - 【当耐特】
Apple Machine Learning Research
Apple Machine Learning Research
aimingoo的专栏
aimingoo的专栏
博客园 - 三生石上(FineUI控件)
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
MongoDB | Blog
MongoDB | Blog
H
Help Net Security
The Cloudflare Blog
Blog — PlanetScale
Blog — PlanetScale
F
Full Disclosure
G
Google Developers Blog
罗磊的独立博客
Jina AI
Jina AI
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Y
Y Combinator Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
J
Java Code Geeks
A
About on SuperTechFans
IT之家
IT之家
大猫的无限游戏
大猫的无限游戏
S
SegmentFault 最新的问题
有赞技术团队
有赞技术团队
GbyAI
GbyAI
雷峰网
雷峰网
T
The Blog of Author Tim Ferriss
The Register - Security
The Register - Security
U
Unit 42
D
Docker
Martin Fowler
Martin Fowler
L
LINUX DO - 热门话题
NISL@THU
NISL@THU
阮一峰的网络日志
阮一峰的网络日志
C
Cybersecurity and Infrastructure Security Agency CISA
博客园_首页
Google DeepMind News
Google DeepMind News

牛牛技术客栈

设计模式-备忘录模式 - OXOXTECH 牛牛技术客栈 设计模式-中介者模式 - OXOXTECH 牛牛技术客栈 Linux【Ubuntu】修改ssh默认端口 - OXOXTECH 牛牛技术客栈 设计模式-迭代器模式 - OXOXTECH 牛牛技术客栈 scheduled定时任务的三种基本实现方式 - OXOXTECH 牛牛技术客栈 Apriori - 基于关联规则的推荐算法(三) - OXOXTECH 牛牛技术客栈 Apriori - 基于关联规则的推荐算法(二) - OXOXTECH 牛牛技术客栈 Apriori - 基于关联规则的推荐算法(一) - OXOXTECH 牛牛技术客栈 基于JavaFX的桌面端网络调试工具 - OXOXTECH 牛牛技术客栈 Golang Channel的原理介绍 - OXOXTECH 牛牛技术客栈 Go语言Map的原理分析 - OXOXTECH 牛牛技术客栈 Go语言错误处理(panic)的最佳实践 - OXOXTECH 牛牛技术客栈 设计模式-解释器模式 - OXOXTECH 牛牛技术客栈 go-webpbin库在Linux报错failed to encode image to WebP: exit status 1.......的问题 exe4j 打包加密的jar - OXOXTECH 牛牛技术客栈 Go生成图形验证码示例 - OXOXTECH 牛牛技术客栈 澳门一天游:一日尽享东方与西方的交融之美 - OXOXTECH 牛牛技术客栈 设计模式-命令模式 - OXOXTECH 牛牛技术客栈 别再自己瞎写工具类了,SpringBoot内置工具类应有尽有 - OXOXTECH 牛牛技术客栈 中山一日游 - OXOXTECH 牛牛技术客栈 设计模式-责任链模式 - OXOXTECH 牛牛技术客栈 起舞吧,齐舞吧 - OXOXTECH 牛牛技术客栈 设计模式-组合模式 - OXOXTECH 牛牛技术客栈 Go语言Web开发|GoFrame框架入门笔记 - OXOXTECH 牛牛技术客栈 Java打包exe教程 - OXOXTECH 牛牛技术客栈 设计模式-代理模式 - OXOXTECH 牛牛技术客栈 MySQL存储过程的优缺点有哪些? - OXOXTECH 牛牛技术客栈 前端渲染优化有哪些? - OXOXTECH 牛牛技术客栈 HTTP状态码及其含义 - OXOXTECH 牛牛技术客栈 从浏览器地址栏输入url到显示页面的步骤 - OXOXTECH 牛牛技术客栈 TypeScript事件派发管理器 - OXOXTECH 牛牛技术客栈 MQTT保留消息的使用方法 - OXOXTECH 牛牛技术客栈 世界工程-港珠澳大桥游 - OXOXTECH 牛牛技术客栈 Golang逃逸分析 - OXOXTECH 牛牛技术客栈 设计模式-享元模式 - OXOXTECH 牛牛技术客栈 牛牛成长记录 - OXOXTECH 牛牛技术客栈 ffmpeg常用命令 - OXOXTECH 牛牛技术客栈 设计模式-外观模式 - OXOXTECH 牛牛技术客栈 设计模式-装饰器模式 - OXOXTECH 牛牛技术客栈 设计模式-桥接模式 - OXOXTECH 牛牛技术客栈 5周年恋爱纪念日 - OXOXTECH 牛牛技术客栈 2024新年快乐,龙腾四海 - OXOXTECH 牛牛技术客栈 迎接新年:除夕的美好时刻 - OXOXTECH 牛牛技术客栈 设计模式-适配器模式 - OXOXTECH 牛牛技术客栈 设计模式-原型模式 - OXOXTECH 牛牛技术客栈 设计模式-建造者模式 - OXOXTECH 牛牛技术客栈 设计模式-工厂模式 - OXOXTECH 牛牛技术客栈 设计模式-单例模式 - OXOXTECH 牛牛技术客栈 SpringBoot在Linux环境下发送163邮件失败(No appropriate protocol (protocol is disabled or cipher suites are inappropriate)) 海与日落 - OXOXTECH 牛牛技术客栈 Swagger比较常用的注解 - OXOXTECH 牛牛技术客栈 猫🐱牛 - OXOXTECH 牛牛技术客栈 2023年最后一个晚霞 - OXOXTECH 牛牛技术客栈 Linux(Centos)部署Nginx教程 - OXOXTECH 牛牛技术客栈 Linux MySQL下载安装详细教程(CentOS版) - OXOXTECH 牛牛技术客栈 JavaFx打包成exe - OXOXTECH 牛牛技术客栈 Flux脚本语言入门教程 - OXOXTECH 牛牛技术客栈 演唱会出图 - OXOXTECH 牛牛技术客栈 Netty TCP解决粘包拆包 - OXOXTECH 牛牛技术客栈 SpringBoot实现订单超时取消的几种方案 - OXOXTECH 牛牛技术客栈 详解Java并发中的各种锁 - OXOXTECH 牛牛技术客栈 SpringBoot集成支付宝支付 - OXOXTECH 牛牛技术客栈 雪花算法:分布式系统唯一ID生成算法 - OXOXTECH 牛牛技术客栈 Java解决空指针的神器Optional - OXOXTECH 牛牛技术客栈 与兴一起 - OXOXTECH 牛牛技术客栈 Java17新特性详解与安装 - OXOXTECH 牛牛技术客栈 Jdk17安装+环境配置详细教程 - OXOXTECH 牛牛技术客栈 孤注一掷 - OXOXTECH 牛牛技术客栈 解决WinSCP经常断线重连 - OXOXTECH 牛牛技术客栈 内存不足导致Tomcat崩溃问题排查与解决办法 - OXOXTECH 牛牛技术客栈 influxDB初识,一个高效的时序数据库 - OXOXTECH 牛牛技术客栈 SpringBoot 服务接口限流方案 - OXOXTECH 牛牛技术客栈 Docker 安装 Portainer - OXOXTECH 牛牛技术客栈 Linux 安装Docker - OXOXTECH 牛牛技术客栈 物料宣传 - OXOXTECH 牛牛技术客栈 Java使用EMQX实现MQTT通信 - OXOXTECH 牛牛技术客栈 Java实现常见的排序算法 - OXOXTECH 牛牛技术客栈 FreeSwitch Windows安装教程 - OXOXTECH 牛牛技术客栈 MQTT单向SSL数据加密 - OXOXTECH 牛牛技术客栈 随性 - OXOXTECH 牛牛技术客栈 mysql报错Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggre的解决方案 Git Push项目报 push to origin/master was rejected 错误解决方案 游行记——珠海金沙滩与金湖公园之行 - OXOXTECH 牛牛技术客栈 Tomcat:解决Tomcat启动警告:"无法将资源添加到Web应用程序缓存中....请考虑增加缓存空间" 的问题 - OXOXTECH 牛牛技术客栈 励骏庞都广场,迷一般的皇宫 - OXOXTECH 牛牛技术客栈 Docker 常用命令集合 - OXOXTECH 牛牛技术客栈 ElasticSearch Windows版-安装教程 - OXOXTECH 牛牛技术客栈 Java去除对象中为null的字段 - OXOXTECH 牛牛技术客栈 我和我的青春 - OXOXTECH 牛牛技术客栈 Java实现螺旋矩阵算法: - OXOXTECH 牛牛技术客栈 Java直接内存分配和释放的理解 - OXOXTECH 牛牛技术客栈 FreeSwitch将默认数据库迁移至MySQL - OXOXTECH 牛牛技术客栈 别错过路上的风景,别错过刹那间的深情! - OXOXTECH 牛牛技术客栈 Viewer.js:一款强大的图片预览组件 - OXOXTECH 牛牛技术客栈 Java JDK Proxy和CGLib动态代理示例 - OXOXTECH 牛牛技术客栈 redis常用命令 - OXOXTECH 牛牛技术客栈 SpringBoot查询IP归属地 - OXOXTECH 牛牛技术客栈 Spring 事务失效的六种情况 - OXOXTECH 牛牛技术客栈 #张艺兴每时每刻# - OXOXTECH 牛牛技术客栈 Nginx常用命令及具体应用 - OXOXTECH 牛牛技术客栈
Redis报错Redis is configured to save RDB snapshots, but it's currently unable to persist to disk.
Jensen · 2025-03-06 · via 牛牛技术客栈

Jensen 后端 Linux, Redis

前言

今天我们公司系统突然请求不了数据📊,回去发现服务没有问题,经过排查日志发现报了如下错误:

MISCONF Redis is configured to save RDB snapshots, but it's currently unable to persist to disk. Commands that may modify the data set are disabled, because this instance is configured to report errors during writes if RDB snapshotting fails (stop-writes-on-bgsave-error option). Please check the Redis logs for details about the RDB error

因为 Redis RDB 快照持久化(默认启用),在尝试保存快照到磁盘时失败,触发了 stop-writes-on-bgsave-error 保护机制。此时 Redis 会拒绝所有写入操作,可能的原因有:

  1. 磁盘空间不足
    RDB 快照需要写入磁盘,如果磁盘空间已满,保存会失败。
  2. 目录权限问题
    Redis 进程没有权限写入配置的 RDB 文件目录(默认 /var/lib/redis)。
  3. 内存不足导致 fork 失败
    在生成 RDB 快照时,Redis 会 fork() 子进程。如果系统内存不足或内核参数限制(如 overcommit_memory 配置不当),会导致 fork 失败。
  4. 磁盘 I/O 性能问题
    磁盘响应缓慢或故障,导致 RDB 文件写入超时。

解决方案

1. 检查磁盘空间

df -h

如果磁盘已满,清理无用文件(如日志、临时文件等)。  

2. 检查目录权限

确保 Redis 进程有权写入 RDB 文件目录:

ls -ld /var/lib/redis  # 查看目录权限
ps aux | grep redis    # 查看 Redis 进程的运行用户(通常是 redis)

如果权限不足,修复目录权限:

chown -R redis:redis /var/lib/redis
chmod 755 /var/lib/redis

3. 调整内存分配策略

如果日志中出现 Cannot allocate memory 错误,需修改内核参数 vm.overcommit_memory

# 临时生效
sysctl vm.overcommit_memory=1
# 永久生效(写入配置文件)
echo "vm.overcommit_memory = 1" >> /etc/sysctl.conf
sysctl -p

参数说明:vm.overcommit_memory=1 允许内核超额分配内存,避免 fork 失败。

4. 检查 Redis 日志

查看 Redis 日志获取具体错误信息(日志路径由 redis.conf 中的 logfile 指定):

tail -n 100 /var/log/redis/redis-server.log

5. 临时恢复写入(应急)

如果需紧急恢复写入,可临时关闭 stop-writes-on-bgsave-error 选项:

redis-cli config set stop-writes-on-bgsave-error no

⚠️ 注意:此操作可能导致数据不一致,仅作为临时措施,需尽快解决根本问题!

6. 优化 RDB 配置

在 redis.conf 中调整 RDB 保存策略以减少频繁快照:

# 减少自动保存频率(默认 900秒1次修改则保存)
save 3600 1      # 1 小时内至少 1 次修改则保存
save 1800 10     # 30 分钟内至少 10 次修改则保存
save 600 10000   # 10 分钟内至少 10000 次修改则保存
# 禁用自动保存(不推荐)
# save ""

7. 改用 AOF 持久化(可选)

如果 RDB 问题难以解决,可启用 AOF(Append-Only File)持久化:

appendonly yes         # 启用 AOF
appendfsync everysec   # 平衡性能和数据安全
复制重启 Redis 生效:
systemctl restart redis

验证修复

手动触发 RDB 快照:

redis-cli bgsave

检查 RDB 文件是否生成:

ls -l /var/lib/redis/dump.rdb

我的解决

以上解决方案均出自牛牛AI

20250305095143761.webp

我尝试了第一种方法使用 df -h 命令查看磁盘占用情况,结果是磁盘空间已经占满;至此我就基本确定是因为磁盘空间不足导致redis rdb写入失败

20250305095300419.webp

发现都是 docker 相关的占用最多,于是我去查看了docker的占用情况

20250305095650414.webp

我的镜像和容器的占用不至于把磁盘给占满啊,于是我又去查了一番看一看overlay里面到底是什么东西。发现是 Docker 默认使用的存储驱动目录(overlay2),用于管理容器和镜像还有日志文件的。

首先容器和镜像我们已经在上图查看得到占用并不算大,那就剩下日志文件了,容器的日志在 /var/lib/docker/containers/ 下

于是我就去看,发现好几个占用 5GB 以上👀,还发现有一个容器的日志占了 23GB 多的日志😱。

20250305102201900.webp

这种情况是容器长时间运行,打印了大量的日志,占据了大量磁盘空间。这种情况下首先得清理日志文件,先保证服务正常。但这只是治标不治本,于是我就打算弄一个定时任务,定期清理容器内的日志,避免时间长了后会大量占用。

使用 truncate(centos自带)开启一个定时任务,命令如下:

# 切换到 root 用户
sudo su -   
# 编辑当前用户的定时任务表
crontab -e   
#在表末尾添加如下指令
0 0 * * * truncate -s 0 /var/lib/docker/containers/*/*-json.log
#保存并退出

解析:

  • 0 0 * * *: cron表达式,表示每天凌晨 0 点执行。
  • truncate -s 0: 将文件大小截断为 0 字节(清空文件内容,但保留文件句柄)。
  • /var/lib/docker/containers/*/*-json.log: 匹配所有容器的 JSON 格式日志文件。

说点什么吧...

共 0 条评论