当前位置: 首页 > news >正文

Redis企业级问题及解决方案

1.1 缓存预热
    场景:“宕机”

    服务器启动后迅速宕机

    问题排查:

    1.请求数量较高,大量的请求过来之后都需要去从缓存中获取数据,但是缓存中又没有,此时从数据库中查找数据然后将数据再存入缓存,造成了短期内对redis的高强度操作从而导致问题

    2.主从之间数据吞吐量较大,数据同步操作频度较高

    解决方案:

    前置准备工作:


    1.日常例行统计数据访问记录,统计访问频度较高的热点数据

    2.利用LRU数据删除策略,构建数据留存队列例如:storm与kafka配合

    准备工作:


    1.将统计结果中的数据分类,根据级别,redis优先加载级别较高的热点数据

    2.利用分布式多服务器同时进行数据读取,提速数据加载过程

    3.热点数据主从同时预热


    实施:

    4.使用脚本程序固定触发数据预热过程

    5.如果条件允许,使用了CDN(内容分发网络),效果会更好

    总的来说:缓存预热就是系统启动前,提前将相关的缓存数据直接加载到缓存系统。避免在用户请求的时候,先查询数据库,然后再将数据缓存的问题!用户直接查询事先被预热的缓存数据!

1.2 缓存雪崩
    场景:数据库服务器崩溃,一连串的场景会随之儿来

    1.系统平稳运行过程中,忽然数据库连接量激增

    2.应用服务器无法及时处理请求

    3.大量408,500错误页面出现

    4.客户反复刷新页面获取数据

    5.数据库崩溃

    6.应用服务器崩溃

    7.重启应用服务器无效

    8.Redis服务器崩溃

    9.Redis集群崩溃

    10.重启数据库后再次被瞬间流量放倒

    问题排查:

    1.在一个较短的时间内,缓存中较多的key集中过期

    2.此周期内请求访问过期的数据,redis未命中,redis向数据库获取数据

    3.数据库同时接收到大量的请求无法及时处理

    4.Redis大量请求被积压,开始出现超时现象

    5.数据库流量激增,数据库崩溃

    6.重启后仍然面对缓存中无数据可用

    7.Redis服务器资源被严重占用,Redis服务器崩溃

    8.Redis集群呈现崩塌,集群瓦解

    9.应用服务器无法及时得到数据响应请求,来自客户端的请求数量越来越多,应用服务器崩溃

    10.应用服务器,redis,数据库全部重启,效果不理想

    总而言之就两点:短时间范围内,大量key集中过期

    解决方案

    思路:
    1.更多的页面静态化处理
    2.构建多级缓存架构

    ​ Nginx缓存+redis缓存+ehcache缓存

    3.检测Mysql严重耗时业务进行优化

    ​ 对数据库的瓶颈排查:例如超时查询、耗时较高事务等

    4.灾难预警机制

    ​ 监控redis服务器性能指标

    ​ CPU占用、CPU使用率

    ​ 内存容量

    ​ 查询平均响应时间

    ​ 线程数

    5.限流、降级

    短时间范围内牺牲一些客户体验,限制一部分请求访问,降低应用服务器压力,待业务低速运转后再逐步放开访问

    落地实践:
    1.LRU与LFU切换

    2.数据有效期策略调整

    ​ 根据业务数据有效期进行分类错峰,A类90分钟,B类80分钟,C类70分钟

    ​ 过期时间使用固定时间+随机值的形式,稀释集中到期的key的数量

    3.超热数据使用永久key

    4.定期维护(自动+人工)

    ​ 对即将过期数据做访问量分析,确认是否延时,配合访问量统计,做热点数据的延时

    5.加锁:慎用!

    总的来说:缓存雪崩就是瞬间过期数据量太大,导致对数据库服务器造成压力。如能够有效避免过期时间集中,可以有效解决雪崩现象的 出现(约40%),配合其他策略一起使用,并监控服务器的运行数据,根据运行记录做快速调整。

1.3 缓存击穿
    场景:还是数据库服务器崩溃,但是跟之前的场景有点不太一样

    1.系统平稳运行过程中

    2.数据库连接量瞬间激增

    3.Redis服务器无大量key过期

    4.Redis内存平稳,无波动

    5.Redis服务器CPU正常

    6.数据库崩溃

    问题排查:

    1.Redis中某个key过期,该key访问量巨大

    2.多个数据请求从服务器直接压到Redis后,均未命中

    3.Redis在短时间内发起了大量对数据库中同一数据的访问

    总而言之就两点:单个key高热数据,key过期

    解决方案:

    1.预先设定

    ​ 以电商为例,每个商家根据店铺等级,指定若干款主打商品,在购物节期间,加大此类信息key的过期时长 注意:购物节不仅仅指当天,以及后续若干天,访问峰值呈现逐渐降低的趋势

    2.现场调整

    ​ 监控访问量,对自然流量激增的数据延长过期时间或设置为永久性key

    3.后台刷新数据

    ​ 启动定时任务,高峰期来临之前,刷新数据有效期,确保不丢失

    4.二级缓存

    ​ 设置不同的失效时间,保障不会被同时淘汰就行

    5.加锁

    ​ 分布式锁,防止被击穿,但是要注意也是性能瓶颈,慎重!

    总的来说:缓存击穿就是单个高热数据过期的瞬间,数据访问量较大,未命中redis后,发起了大量对同一数据的数据库访问,导致对数 据库服务器造成压力。应对策略应该在业务数据分析与预防方面进行,配合运行监控测试与即时调整策略,毕竟单个key的过 期监控难度较高,配合雪崩处理策略即可。

1.4 缓存穿透
    场景:数据库服务器又崩溃了,跟之前的一样吗?

    1.系统平稳运行过程中

    2.应用服务器流量随时间增量较大

    3.Redis服务器命中率随时间逐步降低

    4.Redis内存平稳,内存无压力

    5.Redis服务器CPU占用激增

    6.数据库服务器压力激增

    7.数据库崩溃

    问题排查:

    1.Redis中大面积出现未命中

    2.出现非正常URL访问

    问题分析:

    获取的数据在数据库中也不存在,数据库查询未得到对应数据
    Redis获取到null数据未进行持久化,直接返回
    下次此类数据到达重复上述过程
    出现黑客攻击服务器


    解决方案:

    1.缓存null

    ​ 对查询结果为null的数据进行缓存(长期使用,定期清理),设定短时限,例如30-60秒,最高5分钟

    2.白名单策略

    ​ 提前预热各种分类数据id对应的bitmaps,id作为bitmaps的offset,相当于设置了数据白名单。当加载正常数据时放行,加载异常数据时直接拦截(效率偏低)

    ​ 使用布隆过滤器(有关布隆过滤器的命中问题对当前状况可以忽略)

    2.实施监控

    ​ 实时监控redis命中率(业务正常范围时,通常会有一个波动值)与null数据的占比

    ​ 非活动时段波动:通常检测3-5倍,超过5倍纳入重点排查对象

    ​ 活动时段波动:通常检测10-50倍,超过50倍纳入重点排查对象

    ​ 根据倍数不同,启动不同的排查流程。然后使用黑名单进行防控(运营)

    4.key加密

    ​ 问题出现后,临时启动防灾业务key,对key进行业务层传输加密服务,设定校验程序,过来的key校验

    ​ 例如每天随机分配60个加密串,挑选2到3个,混淆到页面数据id中,发现访问key不满足规则,驳回数据访问

    总的来说:缓存击穿是指访问了不存在的数据,跳过了合法数据的redis数据缓存阶段,每次访问数据库,导致对数据库服务器造成压力。通常此类数据的出现量是一个较低的值,当出现此类情况以毒攻毒,并及时报警。应对策略应该在临时预案防范方面多做文章。

    无论是黑名单还是白名单,都是对整体系统的压力,警报解除后尽快移除。

    务器造成压力。应对策略应该在业务数据分析与预防方面进行,配合运行监控测试与即时调整策略,毕竟单个key的过 期监控难度较高,配合雪崩处理策略即可。

  
 

相关文章:

Redis企业级问题及解决方案

1.1 缓存预热 场景:“宕机” 服务器启动后迅速宕机 问题排查: 1.请求数量较高,大量的请求过来之后都需要去从缓存中获取数据,但是缓存中又没有,此时从数据库中查找数据然后将数据再存入缓存,造成了短期…...

【2021集创赛】基于arm Cortex-M3处理器与深度学习加速器的实时人脸口罩检测 SoC

团队介绍 参赛单位:深圳大学 队伍名称:光之巨人队 指导老师:钟世达、袁涛 参赛队员:冯昊港、潘家豪、慕镐泽 图1 团队风采 1. 项目简介 新冠疫情席卷全球,有效佩戴口罩可以极大程度地减小病毒感染的风险。本项目开发…...

B码的相关知识点笔记

B码(B-Code)通常是指中国北斗卫星导航系统的坐标编码方式。北斗卫星导航系统使用的坐标系是WGS-84,而B码是针对WGS-84坐标系进行编码的一种方式。 B码的格式通常为18位或24位,其中包含以下信息: 前两位为国家码&…...

java“贪吃蛇”小游戏

基于java实现贪吃蛇小游戏,主要通过绘制不同的图片并以一定速度一帧一帧地在窗体上进行展示。 我是在javaSwing项目下创建了一个包 名字叫做:Snakes包 包下有一个启动类和一个设置代码的主界面两个类 代码主界面: 代码主界面主要讲解的是 …...

【面试经典150 | 位运算】数字范围按位与

文章目录 Tag题目来源题目解读解题思路方法一:公共前缀方法二:n & (n-1) 写在最后 Tag 【位运算】 题目来源 201. 数字范围按位与 题目解读 计算给定区间内所有整数的按位与的结果。 解题思路 本题朴素的方法是直接将区间内的所有整数按位与&…...

推介会如何做好媒体宣传

传媒如春雨,润物细无声,大家好,我是51媒体网胡老师。 推介会是一种专为企业、社会组织和团体、政府等提供的展示自身特点、产品和政策的活动形式,旨在促进交流活动,形成合作,从而带来共同利益。推介会的本…...

【ROS导航Navigation】五 | 导航相关的消息 | 地图 | 里程计 | 坐标变换 | 定位 | 目标点和路径规划 | 激光雷达 | 相机

致谢:ROS赵虚左老师 Introduction Autolabor-ROS机器人入门课程《ROS理论与实践》零基础教程 参考赵虚左老师的实战教程 一、地图 nav_msgs/MapMetaData 地图元数据,包括地图的宽度、高度、分辨率等。 nav_msgs/OccupancyGrid 地图栅格数据&#…...

什么是脏读、不可重复读、幻读讲解

数据库隔离级别是数据库管理系统中一个重要的概念,它定义了事务之间的可见性和影响。在多用户并发访问数据库时,隔离级别能够确保事务之间的相互独立性,避免数据不一致的问题。本文将深入探讨三种常见的并发问题:脏读、不可重复读…...

2018年五一杯数学建模C题江苏省本科教育质量综合评价解题全过程文档及程序

2019年五一杯数学建模 C题 江苏省本科教育质量综合评价 原题再现 随着中国的改革开放,国家的综合实力不断增强,中国高等教育发展整体已进入世界中上水平。作为一个教育大省,江苏省的本科教育发展在全国名列前茅,而江苏省13个地级…...

第四代智能井盖传感器:万宾科技助力城市安全

在繁华喧嚣的城市里人来人往,井盖作为基础设施的一个组成部分在路面上分布范围广。然而这些看似普通的井盖却存在着位移、水浸的风险,可能给我们的生活带来诸多不便,更会威胁到我们的人身安全。如何有效监测和管理井盖的状态,成为…...

[Jenkins] Docker 安装Jenkins及迁移流程

系统要求 最低推荐配置: 256MB可用内存1GB可用磁盘空间(作为一个Docker容器运行jenkins的话推荐10GB) 为小团队推荐的硬件配置: 1GB可用内存50 GB 可用磁盘空间 软件配置: Java 8—无论是Java运行时环境(JRE)还是Java开发工具包(JDK&#xff…...

第七篇 基于JSP 技术的网上购书系统——新品上架、推荐产品、在线留言、搜索功能实现(网上商城、仿淘宝、当当、亚马逊)

目录 1.新品上架 1.1功能说明 1.2界面设计 1.3处理流程 1.4数据来源和算法 1.4.1数据来源 1.4.2查询条件 1.4.3表间关系 1.4.4相关sql实例 2.推荐产品 2.1功能说明 2.2界面设计 2.3处理流程 2.4数据来源和算法 2.4.1数据来源 2.4.2查询条件 2.4.3表间关…...

IntelliJ IDE 插件开发 |(一)快速入门

前言 IntelliJ IDEA 作为 Java 开发的首选 IDE,其强大、方便之处不必多说。不过,由于个人或者团队的个性化需求,我们或多或少会想对其功能进行拓展,这时就需要开发插件(在 IntelliJ 平台下的所有 IDE 均可运行&#x…...

【Ubuntu】Windows远程Ubuntu系统

步骤 开启ssh服务并开放22端口关闭防火墙ufw或iptables ;或者将远程端口添加到入站与出站规则安装xrdp并将xrdp用户添加到ssl-cert用户组mstsc 远程,输入账号密码 1、开启ssh服务 1.1. 查看ssh是否已经开启 sudo ps -e | grep ssh如果最后返回是sshd…...

pipeline jenkins流水线

Pipeline 是 Jenkins 中一种灵活且强大的工作流机制,它允许您以代码的形式来定义和管理持续集成和持续交付的流程。 Pipeline 的作用主要体现在以下几个方面: 可编排的构建流程:使用 Pipeline,您可以将一个或多个阶段&#xff08…...

软件工程理论与实践 (吕云翔) 第六章 面向对象分析课后习题及其解析

第六章 面向对象分析 知识点: 一个典型的软件系统通常包括的内容为:它使用数据结构(对象模型),执行操作(动态模型),并且完成数据值的变化(功能模型)。 3种模型之间的关…...

langchain(1):使用LangChain 调用 openai 的 text/chat model

文章目录 重要参考OPENAI API调用 Text 模型调用 Chat 模型消息角色 Chat 模型 vs Text 模型 通过 LangChain 调用 Text 和 Chat 模型调用 text 模型调用 chat 模型 重要参考 langchain 中文网 langchain api openai api 文档 huggingface LangChain 是一个全方位的、基于大…...

rabbitMQ的扇出模式(fanout发布订阅)的生产者与消费者使用案例

扇出模式 fanout 发布订阅模式 生产者 生产者发送消息到交换机(logs),控制台输入消息作为生产者的消息发送 package com.esint.rabbitmq.work03;import com.esint.rabbitmq.RabbitMQUtils; import com.rabbitmq.client.Channel;import java.util.Scanne…...

VSCode打开Json 文件格式化

在VSCode中打开JSON文件时,你可以使用以下步骤来格式化JSON并显示为多行: 使用快捷键: 在打开的JSON文件中,使用快捷键格式化文档。 Windows/Linux:Shift Alt FmacOS:Shift Option F 右键菜单&#xff…...

【C++】:STL——标准模板库介绍 || string类

📚1.什么是STL STL(standard template libaray-标准模板库):是C标准库的重要组成部分,不仅是一个可复用的组件库,而且 是一个包罗数据结构与算法的软件框架 📚2.STL的版本 原始版本 Alexander Stepanov、Meng Lee 在…...

RK3399嵌入式3D人脸识别系统:双目视觉与轻量化算法实战

1. 项目概述与核心价值最近在做一个挺有意思的项目,客户那边有个需求,要在他们现有的RK3399工控板上,集成一套完整的3D人脸识别系统。这活儿听起来挺酷,但真干起来,里头门道不少。RK3399这块板子大家应该不陌生&#x…...

从需求到上线仅48小时,Lovable无代码交付全流程拆解,含客户验收话术与交付Checklist

更多请点击: https://codechina.net 第一章:从需求到上线仅48小时,Lovable无代码交付全流程拆解,含客户验收话术与交付Checklist 极速交付的核心逻辑 Lovable 平台通过「场景模板 可视化逻辑编排 API 低侵入集成」三重能力压缩…...

UE5.4.4视频不导入实战:绕过Content Browser直连文件系统

1. 为什么在UE5.4.4里“不导入视频”反而成了刚需?在UE5.4.4项目现场,我最近连续被三个不同团队问到同一个问题:“能不能别把视频拖进Content Browser?”——不是他们不会操作,而是一拖进去就出事。美术同事导了个2.7G…...

卫星通信PFD限值解析:从FCC Part 25.208看干扰协调与系统设计

1. 项目概述:从FCC Part 25.208切入,理解卫星通信的“空中交通规则” 如果你正在设计一个卫星通信系统,无论是用于物联网数据回传、遥感影像传输,还是未来的低轨星座服务,那么FCC Part 25.208这一串数字和字母的组合&a…...

JavaScript 与 TypeScript:前端双巨头深度对比,一文看懂选谁更合适

引言 在前端开发的浩瀚星空中,JavaScript 与 TypeScript 无疑是两颗最耀眼的明星。一位是统治 Web 二十余年的“原生王者”,另一位则是近年来席卷生态的“静态类型新贵”。对于初学者、项目负责人乃至资深开发者而言,面对技术选型时&#xff…...

2026年亲测AI论文写作软件指南(高效定稿版)

为解决学术写作中效率与合规两大核心痛点,本文精选8款高适配性 AI 论文写作工具(按综合优先级排序),围绕中文学术规范适配、真实参考文献生成、格式标准化、高性价比四大核心维度进行测评,同时配套分场景精准选型方案与…...

Wireshark深度解析TLS 1.3与HTTP/2隐性故障pcap样本

1. 这不是一份普通pcap,而是一份“网络故障诊断教科书级样本”你有没有遇到过这样的情况:客户发来一个几十MB的pcap文件,标题叫“系统登录超时”,你打开Wireshark,密密麻麻全是TCP重传、RST包、DNS超时,但翻…...

机房动环监控系统是什么?其主要功能及智能运用方向有哪些?

机房动环监控系统的重要性 为信息技术的稳健运行提供了保障,尤其是在现代社会日益依赖数据和信息的背景下。利用实时监测电力、温度、湿度环境参数发生,还大幅度降低了因停机带来的经济损失。以大榕树科技为例,他们采用先进的监控系统&#x…...

阿里云DataV技术

DataV是什么:阿里云DataV是一个企业级数据可视化应用搭建平台,核心定位是让用户通过图形化界面(拖拽组件、配置数据),快速搭建出专业水准的大屏可视化应用。它特别适合会议展览、业务监控、风险预警、地理信息分析等需…...

Java SE与Spring Boot在智慧城市中的应用

Java SE与Spring Boot在智慧城市中的应用 在互联网大厂求职的面试中,技术栈与场景应用是考察重点。今天,我们将通过一位搞笑程序员燕双非的面试经历来了解Java SE与Spring Boot在智慧城市中的应用。 第一轮面试 场景:智慧城市的背景 面试官&a…...