手工清理缓存导致缓存雪崩

本文涉及的产品
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
云拨测,每月3000次拨测额度
简介: 手工清理缓存导致缓存雪崩

先说结论

大量缓存在同一时期失效,此时大量的流量会全部冲击到数据库上面,数据库有可能会因为承受不住而宕机

故障现象

问题影响现象:系统卡顿

故障处理过程

9:12监控群收到响应时间异常告警

image.png

image.png


9:18 通过ARMS查到的结果显示接口都比较快。

image.png


9:30 通过ARMS查到的接口只是显示health接口慢,还没有看到哪些服务慢,但是线上实际情况就是慢。

image.png

image.png

image.png



9:39 研发看到慢的接口(链路追踪)

image.png



9:44  测试从ARMS看到慢的接口

image.png



9:46 研发决定重启dyna服务

9:53 发现ARMS监控到的只有grpc接口,而目前调的都是ice接口,所以不能用ARMS看链路。

9:59 dyna重启好了

10:02 研发发现ARMS和Tracing的实时数据差距很大

image.png



10:19 通过查日志,发现确实很慢,而ARMS没有监控到,是因为ice接口没有被监控的缘故

image.png




11:29 查到日志里显示,是redis很慢

image.png


image.png


12:01 查到数据库的执行记录,发现表单加载次数多,2分钟内加载2000多次。

image.png


12:02 测试确认前天晚上发版时清除了表单的缓存。

确定原因,缓存清除后,早上客户使用时都从数据库加载,然后往redis写,所以会比较慢,同时redis响应也可以证明有大量数据在写。


故障原因

发版之后清除了dyna的redis缓存,导致使用时从数据库读取,而拖慢整体性能。


反思与改进方案

修复方案:

重启dyna服务(可能不用重启也可以慢慢变快)。

存在的问题:

1.不知道ARMS没有监控ice服务,所以一开始找错方向。

改进方案:

1.缓存清除可以指定key,而不是批量一次性清除。

  1. 缓存清除后,可以自动加载
  2. 改成gRPC服务
相关文章
|
缓存 Java 数据库连接
|
3天前
|
弹性计算 运维 Shell
自动清理临时文件
【4月更文挑战第30天】
16 0
|
5月前
|
存储 Web App开发 缓存
如何清除 WordPress 中的缓存?
如何清除 WordPress 中的缓存?
252 0
|
6月前
|
缓存
puppteer长时间运行定时清理缓存脚本
puppteer长时间运行定时清理缓存脚本
|
9月前
|
缓存 开发者
强制清理、刷新浏览器缓存
强制清理、刷新浏览器缓存
150 1
|
10月前
|
缓存
thinkphp5.0清除缓存、模版缓存和日志缓存的方法
thinkphp5.0清除缓存、模版缓存和日志缓存的方法
68 0
|
10月前
|
消息中间件 关系型数据库 Shell
记录贴:sentry磁盘占用过大如何清理?
记录贴:sentry磁盘占用过大如何清理?
871 0
|
12月前
|
Linux iOS开发 MacOS
一日一技:如何防止 Homebrew 自动升级和自动清理过期程序
一日一技:如何防止 Homebrew 自动升级和自动清理过期程序
295 0
|
缓存 前端开发
ehcache jgroups同步,节点重启初始化缓存bug
ehcache jgroups同步,节点重启初始化缓存bug
116 0
|
缓存 NoSQL Redis
Redis缓存清理
Redis缓存清理
141 0