redis的性能管理及集群架構(主從復制、哨兵模式)

一、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.pswp.cn/news/161413.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/161413.shtml
英文地址,請注明出處:http://en.pswp.cn/news/161413.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

策略模式應用(內窺鏡項目播放不同種類的視頻)

新舊代碼對比 策略模式 基本概念 策略模式是一種行為設計模式,它定義了一系列算法,將每個算法封裝起來,并且使它們可以互相替換。策略模式允許客戶端選擇算法的具體實現,而不必改變客戶端的代碼。這樣,客戶端代碼就…

中國區域250米歸一化植被指數數據集(2000-2022)

中國區域250米歸一化植被指數數據集(2000-2022)數據集是中國區域2000至2022年月度歸一化植被指數產品,空間分辨率250米,合成方式采用月最大值合成,每年12期,共275期。本產品是基于Aqua/Terra-MODIS衛星傳感器MOD13Q1產品以及土地利…

寄存器、緩存、內存之間的關系和區別

https://blog.csdn.net/m0_46761060/article/details/124689209 目錄 關系1、寄存器2、緩存(Cache) 2.1、寄存器和緩存的區別2.2、一級緩存和二級緩存3、內存 3.1、只讀存儲器 ROM(Read Only Memory)3.2、隨機存儲器 RAM&#xf…

基于LLM+場景識別+詞槽實體抽取實現多輪問答

前言 隨著人工智能技術的不斷進步,大語言模型(LLM)已成為技術前沿的熱點。它們不僅能夠理解和生成文本,還能在多種應用場景中實現復雜的交互。本文將深入探討一段結合了大語言模型能力、意圖識別和詞槽實體抽取的Python代碼&…

鏈表OJ--上

文章目錄 前言一、反轉鏈表二、移除鏈表元素三、鏈表中倒數第K個結點四、相交鏈表五、鏈表的中間結點 前言 一、反轉鏈表 力扣206:反轉鏈表- - -點擊此處傳送 思路圖: 方法一:改變指向 方法二: 代碼: //方法一 /…

十一、h.264編碼

前言 測試環境: ffmpeg的4.3.2自行編譯版本windows環境qt5.12 使用H.264編碼對YUV視頻進行壓縮 ffmpeg -s 640x480 -pix_fmt yuv420p -i in.yuv -c:v libx264 out.h264 -c:v libx264是指定使用libx264作為編碼器完整代碼: H264EncodeThread.h #ifnd…

用HALCON標定助手對相機進行標定

任務要求: 已知相機鏡頭焦距f為8mm,相機單個CCD像素在水平和豎直兩個方向上的尺寸均為3.75微米,相機為普通透光鏡頭和面陣相機,對相機進行標定,測量相機的內外參數。 操作步驟: 1. 在HALCON中運行gen_ca…

C#使用whisper.net實現語音識別(語音轉文本)

目錄 介紹 效果 輸出信息 項目 代碼 下載 介紹 github地址:https://github.com/sandrohanea/whisper.net Whisper.net. Speech to text made simple using Whisper Models 模型下載地址:https://huggingface.co/sandrohanea/whisper.net/tree…

Nginx高級

Nginx高級 第一部分:擴容 通過擴容提升整體吞吐量 1.單機垂直擴容:硬件資源增加 云服務資源增加 整機:IBM、浪潮、DELL、HP等 CPU/主板:更新到主流 網卡:10G/40G網卡 磁盤:SAS(SCSI) HDD(機械…

如何使用ArcGIS Pro進行坐標轉換

不同來源的數據坐標系可能是不同的,為了統一使用這些數據就需要進行坐標轉換,ArcGIS Pro作為專業的GIS軟件,坐標轉換功能肯定也是包含的,這里為大家介紹一下ArcGIS Pro如何進行坐標轉換,希望能對你有所幫助。 數據來源…

【Exception】npm ERR! code UNABLE_TO_GET_ISSUER_CERT_LOCALLY

Talk is cheap, show me the code. 環境 | Environment kversionOSwindows 11nodev18.14.2npm9.5.0 報錯日志 | Error log >npm create vitelatest Need to install the following packages:create-vite5.0.0 Ok to proceed? (y) y npm ERR! code UNABLE_TO_GET_ISSUER_…

2023亞太杯數學建模B題思路+模型+代碼+論文

2023亞太地區數學建模A題思路:開賽后第一時間更新,獲取見文末 名片 2023亞太地區數學建模B題思路:開賽后第一時間更新,獲取見文末 名片 2023亞太地區數學建模C題思路:開賽后第一時間更新,獲取見文末 名片…

idea修改行號顏色

前言 i當idea用了深色主題后,發現行號根本看不清,或者很模糊 例如下面這樣 修改行號顏色 在IntelliJ IDEA中,你可以根據自己的喜好和需求定制行號的顏色。下面是修改行號顏色的步驟: 打開 IntelliJ IDEA。 轉到 “File”&…

ChatGPT規模化服務的經驗與教訓

2022年11月30日,OpenAI發布ChatGPT,以很多人未曾預料的速度迅速走紅。與此同時,由于短時間內用戶量的暴漲,導致服務器過載,迫使OpenAI停止新用戶的注冊。 ChatGPT發布這一年,同樣的情景發生了好幾次。在最近…

opencv-圖像金字塔

圖像金字塔是一種圖像處理技術,它通過不斷降低圖像的分辨率,形成一系列圖像。金字塔分為兩種類型:高斯金字塔和拉普拉斯金字塔。 高斯金字塔(Gaussian Pyramid): 高斯金字塔是通過使用高斯濾波和降采樣&a…

專業遠程控制如何塑造安全體系?向日葵“全流程安全閉環”解析

安全是遠程控制的重中之重,作為國民級遠程控制品牌,向日葵遠程控制就極為注重安全遠控服務的塑造。近期向日葵發布了以安全和核心的新版“向日葵15”以及同步發布《貝銳向日葵遠控安全標準白皮書》(下簡稱《白皮書》),…

使用微信小程序openMapApp接口,報錯問題解決openMapApp:fail invaild coord

使用微信小程序的 openMapApp 接口時遇到了坐標無效的錯誤 (openMapApp:fail invalid coord)。這個錯誤通常是由于提供的地理坐標不符合預期的格式或范圍而引起的: 坐標格式: 確保提供的坐標符合正確的格式。常見的格式是 "緯度,經度"&#xf…

【11月比賽合集】5場可報名的「創新應用」、「數據分析」和「程序設計」大獎賽,任君挑選!

CompHub[1] 實時聚合多平臺的數據類(Kaggle、天池…)和OJ類(Leetcode、牛客…)比賽。本賬號會推送最新的比賽消息,歡迎關注! 以下信息僅供參考,以比賽官網為準 目錄 創新應用賽(1場比賽)數據分析賽&#…

逸學java【初級菜鳥篇】9.3 Stream流

hi,我是逸塵,一起學java吧 得益于Lambda所帶來的函數式編程,引入了一個全新的Stream流概念(就是都基本使用lambda的形式)。 流處理 我們首先理解什么是流處理,它類似于sql語句,可以執行非常復…

【開源】基于Vue和SpringBoot的智能教學資源庫系統

項目編號: S 050 ,文末獲取源碼。 \color{red}{項目編號:S050,文末獲取源碼。} 項目編號:S050,文末獲取源碼。 目錄 一、摘要1.1 項目介紹1.2 項目錄屏 二、功能模塊2.1 數據中心模塊2.2 課程檔案模塊2.3 課…