redis的性能管理及集群架构(主从复制、哨兵模式)

news2025/1/14 18:24:22

一、redis的性能管理

1、内存指标info memory

内存指标(重要)

used_memory:853736

数据占用的内存

used_memory_rss:10551296

redis向操作系统申请的内存

used_memory_peak:853736

redis使用内存的峰值

注:单位:字节

系统巡检:硬件巡检、数据库、中间件(nginx、redis)、docker、k8s

2内存碎片率

(1)定义:系统已分配给redis,但reids未能有效利用的内存

(2)计算格式:内存碎片率=used_memory_rss/used_memory

(3)监控指标redis-cli info memory|grep ratio(生产环境常用)

监控指标

定义

allocator_frag_ratio:1.29

分配器碎片的比例

(越小越好,值越高,内存浪费越多)

redis主进程调度时产生的内存

allocator_rss_ratio:5.49

分配器占用物理内存的比例

主进程调度时占用的物理内存

rss_overhead_ratio:1.38

redis占用物理空间额外的开销比例(比例越低越好,redis实际占用的物理内存和向系统申请的内存越接近,额外的开销越低)

RSS是redis向系统申请的内存空间

mem_fragmentation_ratio:15.59

内存碎片率

(越低越好,内存使用率越高)

3、清理内存的两种方式

(1)自动清理碎片vim /etc/redis/6379.conf

末尾添加activedefrag yes自动清理碎片的配置

2手动清理碎片redis-cli memory purge

4、设置redis的最大内存阀值

(在工作中一定要设置redis的占用内存阈值。若不设置阈值,会塞满内存,直到炸)

(1)先设置最大内存阀值vim /etc/redis/6379.conf

添加maxmemory 1gb

一旦达到阀值,会自动清理碎片,开启key的回收机制

(2)再开启key的回收机制

key的回收机制

maxmemory-policy volatile-lru

(常用)

使用redis内置的lru算法,在已设置过期时间的键值对中淘汰数据中,移除最近最少使用的键值对

maxmemory-policy volatile-ttl

(常用)

使用redis内置的ttl算法,在已设置过期时间的键值对中挑选一个即将过期的键值对

maxmemory-policy volatile-random

(少用)

在已设置过期时间的键值对中,挑选数据,随机淘汰键值对

注:以上算法只针对已设置过期时间的键值对,永不过期的不在此范围内

allkeys-lru

使用redis内置的lru算法,对所有的键值对进行淘汰,移除最少使用的键值对

allkeys-random

(更少用)

在所有键值对中任意选择数据进行淘汰

注:以上算法针对所有的键值对,无论是否设置过期时间

maxmemory-policy noeviction

(最常用)

禁止键值对回收(不删除任何键值对,直到redis把内存塞满,写满报错为止)

【面试题】redis占用内存的效率问题如何解决?(经验)

①日常巡检中,监控redis的占用情况

②设置redis占用系统内存的阀值,避免占用系统全部内存

③手动/自动清理内存碎片

④配置合适的key回收机制

5redis雪崩(缓存雪崩)(少见)

(1)定义

大量的应用请求无法在redis缓存中处理,请求会全部发送到后台数据库,数据库并发能力本身就差,一旦高并发,数据库很快会崩溃

(2)产生雪崩的原因

①redis集群大面积故障

②在redis缓存中,大量数据同时过期,大量的请求无法得到处理

③redis实例宕机

(3)解决雪崩的方式

①事前预防:采用高可用架构(主从复制、哨兵模式、redis集群),防止整个缓存故障

②事中处理(开发):在国内通用方式——HySTRIX(熔断、降级、限流),降低雪崩发生后的损失,确保数据库不死,可以慢,但不能没有响应

③事后解决:以redis备份的方式恢复数据(运维)或快速缓存预热(开发)

6、redis的缓存击穿(重点)

(1)产生原因

①热点数据缓存过期或被删除,当多个请求并发访问热点数据时,请求转发到数据库,导致数据库性能快速下降。经常被请求的缓存数据最好设置为永不过期

②键值对还在,但值被替换,原有的请求找不到之后,同样会请求后台数据库,导致数据库性能快速下降

(2)解决方式

①热点数据设置成永不过期

②恢复原有的值

7、redis的缓存穿透(恶意攻击)(很少见)

(1)定义

缓存中没有数据,数据库也没有相应的数据,但有用户一直在发起这个都没有的请求,而且请求的数据格式很大。这种情况一般是黑客利用漏洞攻击,压垮应用数据库

(2)解决方式:专门的安全人员处理

redis的集群架构

1、高可用方案

(1)主从复制

(2)哨兵模式

(3)redis集群

2、主从复制

(1)主从复制是redis实现高可用的基础,哨兵模式和集群都是在主从复制的基础上实现高可用

(2)主从复制实现数据的多机备份和读写分离(主服务器——写,从服务器——读)

缺点:故障无法自动恢复,需人工干预,无法实现写操作的负载均衡

3、主从复制的工作原理

由主节点master和从节点slave组成,数据复制是单向的,只能从主节点到从节点

4、哨兵模式

在主从复制的基础上实现主节点故障的自动切换

(1)哨兵模式定义

哨兵是一个分布式系统,用于在主从结构之间,对每台redis服务进行监控。主节点出现故障时,从节点通过投票的方式选择一个新的master

哨兵模式也需要至少三个节点

(2)哨兵模式的结构

①哨兵节点:监控主、从节点,不存储数据

②数据节点:主节点和从节点,都是数据节点

(哨兵1监控从1,从2节点;哨兵2监控主节点,从2 节点;哨兵3监控主节点,从1节点)

(2)哨兵模式工作原理

每个哨兵节点每隔一秒,通过ping命令方式,检测主、从之间的心跳线,主节点在一定时间内没有回复或回复了错误消息,这个时候哨兵会主观认为主节点下线了;超过半数的哨兵节点认为主节点下线了,这个时候才会认为主节点是客观下线

故障恢复可能会有延迟,因为有一个选举过程

(4)如何选举新的主节点

哨兵节点通过raft算法(选举算法),每个节点共同投票选举出一个新的master,然后新的master实现主节点的转移和故障恢复通知

(5)主节点的选举过程

①已下线的从节点不会被选为主节点

②选择配置文件中从节点优先级最高的replica-priority 100

③自动选择一个复制数据最完整的从节点

三、主从复制+哨兵模式实验

基于主从复制做哨兵模式实验

实验目的:解决redis单节点故障问题

实验条件:

IP地址

作用

组件

20.0.0.14

主服务器

redis服务

20.0.0.24

从服务器1

redis服务

20.0.0.34

从服务器2

redis服务

实验步骤:

1、主从复制实验

(1)配置主服务器

(2)配置从服务器

从1

从2

replicaof 20.0.0.14 6379表示只读(20.0.0.14是主服务器的IP地址)

主从复制完成

(3)测试

2、哨兵模式实验

(1)配置主服务器

这个2:一般设置成集群的一半

最小切换时间30秒

最大切换时间180秒

(2)配置从服务器

从1

从2(与从1同样的配置)

(3)启动主从服务器(先启动主再启动从)

redis-sentinel sentinel.conf &

监控哨兵集群的信息redis-cli -p 26379 info Sentinel

哨兵模式搭建完毕

查看从节点信息tail -f /var/log/sentinel.log

(4)故障切换

模拟故障

看日志是否主从切换,有延迟

tail -f /var/log/sentinel.log

目前,新主的IP地址是20.0.0.34

(5)测试

①测试新主能不能写

恢复原主

②测试原主能否继续写

不能

原因:配置文件/etc/redis/6379.conf发生变化

原主(现从2)

从1

原从2(新主)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1240183.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

优化记录 -- 记一次搜索引擎(SOLR)优化

业务场景 某服务根据用户相关信息,使用搜索引擎进行数据检索 软件配置 solr 1台:32c 64g 数据10gb左右,版本 7.5.5 应用服务器1台:16c 64g 应用程序 3节点 问题产生现象 1、因业务系统因处理能不足,对业务系统硬件…

基于STM32的手势识别算法研究与应用

基于STM32的手势识别算法在人机交互和智能设备控制中具有重要的应用价值。本文将介绍基于STM32的手势识别算法的研究原理和实现步骤,并提供相应的代码示例。 1. 手势识别概述 手势识别是一种通过分析人体的手部动作和姿势来识别和理解人的意图的技术。基于STM32的…

简单几步,借助Aapose.Cells将 Excel XLS 转换为PPT

数据呈现是商业和学术工作的一个重要方面。通常,您需要将数据从一种格式转换为另一种格式,以创建信息丰富且具有视觉吸引力的演示文稿。当您需要在幻灯片上呈现工作表数据时,需要从 Excel XLS 转换为 PowerPoint 演示文稿。在这篇博文中&…

【 顺序表经典算法—移除元素和合并两个有序数组】

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 目录 前言 经典算法OJ题1: 移除元素 解法一、逐个判断 解法二、双指针覆盖 经典算法OJ题2: 合并两个有序数组 OJ题分为两个类型: 总结 前言…

hadoop shell操作 hdfs处理文件命令 hdfs上传命令 hadoop fs -put命令hadoop fs相关命令 hadoop(十三)

hadoop fs -help rm 查看rm命令作用 hadoop fs 查看命令 1. 创建文件夹: # hdfs前缀也是可以的。更推荐hadoop hadoop fs -mkdir /sanguo 2.上传至hdfs命令: 作用: 从本地上传hdfs系统 (本地文件被剪切走,不存在了&…

探究Kafka原理-1.初识Kafka

👏作者简介:大家好,我是爱吃芝士的土豆倪,24届校招生Java选手,很高兴认识大家📕系列专栏:Spring源码、JUC源码、Kafka原理🔥如果感觉博主的文章还不错的话,请&#x1f44…

服务器主机安全的重要性及防护策略

在数字化时代,服务器主机安全是任何组织都必须高度重视的问题。无论是大型企业还是小型企业,无论是政府机构还是个人用户,都需要确保其服务器主机的安全,以防止数据泄露、网络攻击和系统瘫痪等严重后果。 一、服务器主机安全的重…

基于STM32的色彩识别与分类算法优化

基于STM32的色彩识别与分类算法优化是一项与图像处理和机器学习相关的研究任务,旨在实现高效的色彩识别和分类算法在STM32微控制器上的运行。本文将介绍基于STM32的色彩识别与分类算法优化的原理和实现步骤,并提供相应的代码示例。 1. 色彩识别与分类概…

深度学习 loss 是nan的可能原因

1 loss 损失值非常大,超过了浮点数的范围,所以表示为overflow 状态下的男。 解决办法: 减小学习率,观察loss值是不是还是nan 在将数据输入模型前,进行恰当的归一化 缩放 2 loss 的计算中存在除以0, log(0…

【docker】docker总结

一、Docker简介 Docker是开源应用容器引擎,轻量级容器技术。基于Go语言,并遵循Apache2.0协议开源Docker可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的Linux系统上,也可以实现虚拟化容…

边云协同架构设计

文章目录 一. "边云协同"是什么?二. "边云协同"主要包括6种协同2.1 资源协同2.2 数据协同2.3 智能协同2.4 应用管理协同2.5 业务管理协同2.6 服务协同 三. "边云协同"的优势 其它相关推荐: 系统架构之微服务架构 系统架构…

Leaflet实现轨迹播放动画效果

效果图如下&#xff1a; <!DOCTYPE html> <html><head><title>轨迹</title><meta charset"utf-8" /><meta name"viewport" content"widthdevice-width, initial-scale1.0" /><!-- 引入样式 -->…

记录小白第一次EDUsrc:任意用户密码重置漏洞

一、漏洞说明&#xff1a; xxxx学院身份认证系统有严重的逻辑设计缺陷&#xff1a;账户登录、手机登录、密码找回三个接口找到n个逻辑漏洞包括任意账号密码修改、信息泄露&#xff08;应该还有更多&#xff0c;但是有很多重复的漏洞&#xff0c;没必要再找了&#xff09; edus…

Mybatis plus 简介

简介 MyBatis-Plus (opens new window)&#xff08;简称 MP&#xff09;是一个 MyBatis (opens new window)的增强工具&#xff0c;在 MyBatis 的基础上只做增强不做改变&#xff0c;为简化开发、提高效率而生。 官网:https://baomidou.com/pages/24112f/ 特性 无侵入&…

redis---主从复制及哨兵模式(高可用)

主从复制 主从复制&#xff1a;主从复制是redis实现高可用的基础&#xff0c;哨兵模式和集群都是在主从复制的基础之上实现高可用。 主从负责的工作原理 1、主节点&#xff08;master&#xff09; 从节点&#xff08;slave&#xff09;组成&#xff0c;数据复制是单向的&a…

七牛云产品使用介绍之Dora篇

上一篇介绍了七牛云的CDN服务用于实现对静态资源的访问加速&#xff0c;下一个产品该轮到我们可爱的Dora了 Dora全称&#xff1a;智能多媒体服务 介绍&#xff1a;是一种零运维、高可用、高性能的多媒体数据处理服务。提供图片处理、音视频转码、水印、截图、瘦身等基础功能&am…

HuggingFace-利用BERT预训练模型实现中文情感分类(下游任务)

准备数据集 使用编码工具 首先需要加载编码工具&#xff0c;编码工具可以将抽象的文字转成数字&#xff0c;便于神经网络后续的处理&#xff0c;其代码如下&#xff1a; # 定义数据集 from transformers import BertTokenizer, BertModel, AdamW # 加载tokenizer token Ber…

zookeeper单机版的搭建

一 zookeeper的搭建 1.1 上传zkjar包 1.2 搭建配置 1.解压压缩包 [rootlocalhost export]# tar -zxvf zookeeper-3.7.0-bin.tar.gz 2.创建data文件夹 [rootlocalhost export]# cd apache-zookeeper-3.7.0-bin/ [rootlocalhost apache-zookeeper-3.7.0-bin]# ls bin conf…

专业远程控制如何塑造安全体系?向日葵“全流程安全闭环”解析

安全是远程控制的重中之重&#xff0c;作为国民级远程控制品牌&#xff0c;向日葵远程控制就极为注重安全远控服务的塑造。近期向日葵发布了以安全和核心的新版“向日葵15”以及同步发布《贝锐向日葵远控安全标准白皮书》&#xff08;下简称《白皮书》&#xff09;&#xff0c;…

2023年危险化学品生产单位安全生产管理人员证模拟考试题库及危险化学品生产单位安全生产管理人员理论考试试题

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 2023年危险化学品生产单位安全生产管理人员证模拟考试题库及危险化学品生产单位安全生产管理人员理论考试试题是由安全生产模拟考试一点通提供&#xff0c;危险化学品生产单位安全生产管理人员证模拟考试题库是根据危…