分享一次因为Redis持久化超时导致服务器重启的事件

5 篇文章 0 订阅
4 篇文章 0 订阅

写在前面

记录一次Redis持久化超时导致服务器重启的系统事件。

建议首先阅读 https://blog.csdn.net/zhouwenjun0820/article/details/105881313

1. 持久化监控

(1)可以通过指定命令【info persistence】查询当前Redis实例持久化状态,如下图:

在这里插入图片描述
其中
【rdb_last_bgsave_time_sec】是上一次rdb快照的耗时,
【aof_delayed_fsync】是同步(save)AOF文件延迟(超过2秒)的累计次数。

(2)可以通过查询日志:

Asynchronous AOF fsync is taking too long(disk is busy?).writing the AOF buffer without waiting for fsync to complete. this may slow down Redis. 

意思是:异步AOF文件同步耗时很长,磁盘很繁忙么?
在不等待fsync完成的情况下写入AOF缓冲区,这有可能降低Redis的性能。

我们的监控系统根据这两个现象进行监控,如果监控到rdb耗时超过30秒或者aof fsync延迟累计持续增加,或者aof超时日志,则说明Redis可能存在问题。

2. 超时现象

我们的Redis同时开启了RDB和AOF两种持久化模式。

监控系统于2019年7月13号开始监控到Redis RDB耗时超过30秒,甚至超过60秒,不断有aof fsync超时日志出现。

经查看Redis的内存使用从7月10号开始急速上升,经确认是某个key的过期时间设置过长(长达41天),而且每笔请求会新增一个key,而10号开始的营销活动是这次告警的导火索。

3. 服务器宕机

在2019年8月13号,监控系统监控到某个Redis实例失联,并且该服务器在凌晨异常重启,经过查看系统重启生成的coredump日志(/backup/crash),发现重启的原因是Redis进程处于状态 D 的时间长达120秒,触发了系统kernel panic。

coredump日志:

在这里插入图片描述

这是因为Redis的RDB耗时超过2分钟导致的

4. 解决方案

临时关闭RDB持久化。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值