• 做一名有经验的开发人员(一)大半夜 Redis 内存暴涨怎么办?


    欢迎关注微信公众号:冬瓜白

    后续会开启一个新的系列,“做一名有经验的开发人员”(这也是刚入行的时候跟朋友们经常开玩笑的一句话),主要是对平时工作中从周边大佬身上学习的总结,以及自己的一些思考。

    以本文相关的 Redis 为例,集群、Replication,数据结构网上的学习资料很多,有的甚至还从 Redis 源码的角度进行分析,但是真的当出现了线上问题的时候该如何处理呢,这时候经验和思维方式就很重要了,甚至于在国内很多公司环境下,是最重要的,没有之一。

    注:本文是对组内大佬鑫哥的思考方式的总结,已申请授权。

    前天早上 DBA 在群里反馈 Redis 内存爆了:

     

    这里有几个关键点:

    1. 是大半夜

    2. 是突然暴涨

    这时候我的第一个反应是找 DBA 看下大 key,但事后来看,这个思路其实就已经走偏了,Redis 中大 key 是肯定有的,甚至于是一直存在的,但为什么独独就这天晚上“突然爆了”。所以问题的关键其实并不是 Redis 中有哪些大 key,而是哪些大 key 是这天晚上激增的(当然我们现有的运维能力是无法查出 Redis 的操作日志的,也无法对比前几天晚上这个点和这天晚上这个点 Redis 中 key 的内容),所以即使你找到了大 key,并且处理了,但你仍然不知道为啥会突然暴涨。

    还有一个思路是从定时任务的角度出发,可能某些特殊原因造成某些数据暴涨,定时任务夜间执行处理暴涨数据的时候引发了 Redis 内存暴涨,而本次问题不在这一范畴。

    于是鑫哥有了一个新的思路,看一下半夜暴涨的时间点哪些请求的量很大,因为是半夜,所以很容易找出那个最特别的接口,于是最终就定位到了这个问题。

    最后问题解决的时候感觉索然无味,但情况就是这么个情况,知道了就很简单,不知道就永远想不到。

  • 相关阅读:
    使用OpenCV计算两幅图像的协方差
    Linux nohup bash cm_watch.sh >> run.log 2>&1 &
    c++标准模板库:STL
    抽象类 +接口
    语音机器人空号识别介绍
    devops步骤 -- jenkins安装
    【最优化算法】基于【MATLAB】的拟牛顿法【Quasi Newton method】分析与推导
    Centos安装gitlabce
    ffmpeg云服务器推流
    ArduPilot开源飞控之RC_Channels
  • 原文地址:https://blog.csdn.net/Dongguabai/article/details/126804500