zoukankan      html  css  js  c++  java
  • redis内存溢出问题分析和后续规避方法

    【bug描述】

    【步骤】

    1、【前置:当前时间是2018年2月6日】用户A登录客户端A,用户A登录客户端B,查看客户端账号被踢出登录时的弹窗时间显示8月24日,时间显示错误。
    2、【前置:该弹窗提示平台已经屏蔽】消息列表点击任意群聊,进入群聊对话窗提示:“XX项目升级,部分功能暂停使用,敬请谅解”。

    【实际结果】:
    1、【前置:当前时间是2018年2月6日】账号被踢出登录时的弹窗时间显示8月24日,时间显示错误。
    2、【前置:该弹窗提示平台已经屏蔽】进入群聊对话窗提示:“云企信升级,部分功能暂停使用,敬请谅解”。

    【预期结果】:
    1、【前置:当前时间是2018年2月6日】账号被踢出登录时的弹窗时间显示当前时间,时间显示正确。
    2、【前置:该弹窗提示平台已经屏蔽】进入群聊对话窗不提示:“云企信升级,部分功能暂停使用,敬请谅解”。


    【问题来源】:用户反馈

    【版本】:V1.8.0版本

    【反馈时间】:2018年2月6日

    【bug分析】

    1、 为什么当前时间是2018年2月6日,账号被踢出登录时的弹窗时间显示8月24日,时间显示错误?

    现网 8月份之后由运维接管,缓存数据库(redis)未配置持久化,数据存储在缓存中,redis服务重启后缓存数据丢失,业务只能读取到8月份的持久化数据。6号上午由于redis内存溢出,增大配置内存后重启缓存数据丢失,数据错乱,导致平台下发错误的消息。

    2、 为什么该弹窗提示平台已经屏蔽,进入群聊对话窗提示:“云企信升级,部分功能暂停使用,敬请谅解”?
    现网 8月份之后由运维接管,缓存数据库(redis)未配置持久化,数据存储在缓存中,redis服务重启后缓存数据丢失,业务只能读取到8月份的持久化数据。6号上午由于redis内存溢出,增大配置内存后重启缓存数据丢失,导致标志位被覆盖,下发错误状态。

    3、 什么是redis持久化?持久化和非持久化区别?
    Redis配置中可配置持久化策略,默认900s内有1个更改,300秒有10个更改等。配置开关默认打开,若关闭(非持久化),数据只存储缓存中,若打开,数据将按配置策略落地到磁盘。重启服务后,缓存中的数据将丢失。

    4、 redis数据库内存溢出触发因素?
    老模块考勤每天定时把所有企业的用户数据写入redis,数据量较大,同时现网redis未做内存监控。

    5、 账号登录跟redis的缓存关系,存了什么数据在redis?
    redis存储了用户的token、设备id、验证码信息等。用户token登录时,会首先校验用户的设备,若终端入参的设备id与token不一致,平台认为用户更换了设备,会下发通知。

    6、 如何规避redis数据库内存溢出风险?
    ①消耗内存的模块需尽快改造或停止,业务中使用redis需设置有效时间。②现网针对基础软件服务的监控(磁盘、内存等)需完善。③开发设计评审时关注开发模型对redis的写频率,以及消耗大小,评估对redis内存消耗的风险。



    【经验总结】
    1、后续测试中,业务中涉及到redis,提醒开发需要设置有效时间,消耗内存的模块需尽快改造或停止,现网针对基础软件服务的监控(磁盘、内存等)需要完善,开发设计评审时关注开发模型对redis的写频率,以及消耗大小,评估对redis内存消耗的风险。

  • 相关阅读:
    西门子PLC 8种入门实例接线与控制
    安全继电器工作原理、接线图、使用方法图解
    RKNN--群聊天
    技术分享 | 无人机上仅使用CPU实时运行Yolov5?(OpenVINO帮你实现)(上篇)
    (博途)S7-300PLC传送带工件计数控制程序设计
    Adaptive Mixture Regression Network with Local Counting Map for Crowd Counting
    配色网站收集(持续更新...)
    VUE项目里个性化写个时间轴组件,带折叠效果
    纯CSS画尖角符号
    Docker部署
  • 原文地址:https://www.cnblogs.com/51QA/p/8709959.html
Copyright © 2011-2022 走看看