欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Redis 內(nèi)存碎片原因及清理

 更新時間:2024年06月28日 10:32:29   作者:_江嶼_  
內(nèi)存碎片是指在內(nèi)存分配的時候,產(chǎn)生的不能重復(fù)利用的空間,本文主要介紹了Redis 內(nèi)存碎片原因及清理,具有一定的參考價值,感興趣的可以了解一下

一、Redis 內(nèi)存碎片

內(nèi)存碎片是指在內(nèi)存分配的時候,產(chǎn)生的不能重復(fù)利用的空間。例如,內(nèi)存空間還有3K,應(yīng)用程序想申請連續(xù)的3K空間,雖然內(nèi)存空間夠,但是空間分配為2K,1K,總空間夠,但是不連續(xù),導致應(yīng)用程序申請失敗,這種無法利用的內(nèi)存空間稱之為"內(nèi)存碎片"。內(nèi)存分片會占用操作系統(tǒng)分配給redis的內(nèi)存空間,嚴重影響redis性能。

二、內(nèi)存碎片形成原因

1.內(nèi)因
內(nèi)存分片策略引發(fā):redis默認使用jemalloc分配器分配內(nèi)存。jemalloc每次分配2*N固定空間,例如寫入數(shù)據(jù)申請10K空間,jemalloc會分配16K空間,優(yōu)點:下次寫入>=6K數(shù)據(jù)不需要申請內(nèi)存空間,缺點造成內(nèi)存浪費。

2.外因
修改內(nèi)存中數(shù)據(jù):修改包括增加和減少內(nèi)存占用,例如原來的16K空間數(shù)據(jù),增加或減少1K都會造成內(nèi)存浪費。大量內(nèi)存碎片的存在,會造成redis實際內(nèi)存使用率降低,影響性能。

三、查看內(nèi)存碎片

info memory 查看redis內(nèi)存使用情況,主要關(guān)注以下參數(shù)

used_memory:                 redis分配的內(nèi)存總量單位為b
used_memory_human:      redis分配的內(nèi)存總量單位為M
used_memory_rss:           redis向操作系統(tǒng)申請的內(nèi)存總量單位為b
used_memory_rss_human: redis向操作系統(tǒng)申請的內(nèi)存總量單位為M
mem_fragmentation_ratio:     內(nèi)存碎片率
mem_allocator:jemalloc-5.1.0 內(nèi)存分配器

mem_fragmentation_ratio計算公式為:used_memory_rss/used_memory 該值大于1但小于1.5。這種情況是合理的。該值過高時考慮清理內(nèi)存,例如該值大于1.5表示有50%空間浪費,需要清理內(nèi)存碎片。

四、內(nèi)存碎片清理

內(nèi)存碎片清理,就是將不連續(xù)的內(nèi)存空間重新整理為連續(xù)空間,由于redis是單線程,在清理過程中會造成堵塞,降低性能??赏ㄟ^以下三種方式清理:

1.手動清理內(nèi)存碎片

memory purge 只支持jemalloc內(nèi)存分配器

2.自動清理

修改redis.conf配置文件

activedefrag yes 開啟自動清理內(nèi)存碎片,命令開啟:config set activedefrag yes
active-defrag-ignore-bytes 100mb 內(nèi)存碎片的字節(jié)數(shù)達到100M時開始清理
active-defrag-threshold-lower 10 內(nèi)存碎片空間占操作系統(tǒng)分配給redis的總空間比例達到 10% 時開始清理
active-defrag-ignore-bytes與active-defrag-threshold-lower 兩個條件同時滿足會觸發(fā)內(nèi)存碎片清理,當有一個不滿足則停止清理
active-defrag-threshold-upper 100 內(nèi)存碎片超過 100%,則盡最大努力整理
active-defrag-cycle-min 1 自動清理過程所用CPU時間的比例不低于1%,保證能正常清理
active-defrag-cycle-max 25 自動清理過程所用CPU時間的比例不高于25%,超過25%停止清理,避免redis主線程阻塞
active-defrag-max-scan-fields 1000 自動清理過程中長度小于1000的set/hash/zset/list才會進行自動清理

----以上參數(shù)默認注釋----

3.重啟redis

到此這篇關(guān)于Redis 內(nèi)存碎片原因及清理的文章就介紹到這了,更多相關(guān)Redis 內(nèi)存碎片內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Redis高并發(fā)超賣問題解決方案圖文詳解

    Redis高并發(fā)超賣問題解決方案圖文詳解

    Redis是一種基于內(nèi)存的數(shù)據(jù)存儲系統(tǒng),被廣泛用于解決高并發(fā)問題,下面這篇文章主要給大家介紹了關(guān)于Redis高并發(fā)超賣問題解決方案的相關(guān)資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2024-02-02
  • Redis?緩存淘汰策略和事務(wù)實現(xiàn)樂觀鎖詳情

    Redis?緩存淘汰策略和事務(wù)實現(xiàn)樂觀鎖詳情

    這篇文章主要介紹了Redis緩存淘汰策略和事務(wù)實現(xiàn)樂觀鎖詳情,文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的朋友可以參考一下
    2022-07-07
  • 基于Redis實現(xiàn)分布式鎖以及任務(wù)隊列

    基于Redis實現(xiàn)分布式鎖以及任務(wù)隊列

    這篇文章主要介紹了基于Redis實現(xiàn)分布式鎖以及任務(wù)隊列,需要的朋友可以參考下
    2015-11-11
  • redisson鎖tryLock的正確使用方式

    redisson鎖tryLock的正確使用方式

    這篇文章主要介紹了redisson鎖tryLock的正確使用方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • 淺談redission鎖的默認失效時間

    淺談redission鎖的默認失效時間

    Redisson是一個基于Redis的Java駐留庫,提供了許多分布式對象和服務(wù),包括分布式鎖,本文主要介紹了淺談redission鎖的默認失效時間, 具有一定的參考價值,感興趣的可以了解一下
    2024-02-02
  • Redis02 使用Redis數(shù)據(jù)庫(String類型)全面解析

    Redis02 使用Redis數(shù)據(jù)庫(String類型)全面解析

    這篇文章主要介紹了Redis02 使用Redis數(shù)據(jù)庫(String類型)全面解析的相關(guān)資料,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2016-07-07
  • Redis數(shù)據(jù)庫的使用場景介紹(避免誤用Redis)

    Redis數(shù)據(jù)庫的使用場景介紹(避免誤用Redis)

    這篇文章主要介紹了Redis數(shù)據(jù)庫的使用場景介紹(避免誤用Redis),本文用簡要的語言總結(jié)了Redis數(shù)據(jù)庫的適應(yīng)場合,人而避免錯誤的使用它而產(chǎn)生昂貴的維護代價,需要的朋友可以參考下
    2015-03-03
  • Redis中Zset類型常用命令的實現(xiàn)

    Redis中Zset類型常用命令的實現(xiàn)

    Zset是Redis的一種有序集合數(shù)據(jù)類型,Zset通過壓縮列表和跳躍表兩種底層編碼方式支持小數(shù)據(jù)集和大數(shù)據(jù)集,支持多種操作,包括添加、查詢、刪除元素以及集合運算等,具有不同的時間復(fù)雜度,感興趣的可以了解一下
    2024-10-10
  • Redis數(shù)據(jù)庫分布式設(shè)計方案介紹

    Redis數(shù)據(jù)庫分布式設(shè)計方案介紹

    大家好,本篇文章主要講的是Redis數(shù)據(jù)庫分布式設(shè)計方案介紹,感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下
    2022-01-01
  • 詳解Redis緩存預(yù)熱的實現(xiàn)方法

    詳解Redis緩存預(yù)熱的實現(xiàn)方法

    緩存預(yù)熱是一種在程序啟動或緩存失效之后,主動將熱點數(shù)據(jù)加載到緩存中的策略,本文將給大家分享一下如何實現(xiàn)Redis的緩存預(yù)熱,文中有詳細的實現(xiàn)代碼,需要的朋友可以參考下
    2023-10-10

最新評論