最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

redis 限制內(nèi)存使用大小的實現(xiàn)

 更新時間:2021年05月08日 11:30:23   作者:四月的水  
這篇文章主要介紹了redis 限制內(nèi)存使用大小的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

記錄一次生產(chǎn)環(huán)境問題排查過程:

生產(chǎn)環(huán)境部署方式:nginx + uwsgi + flask

問題描述:

發(fā)現(xiàn)生產(chǎn)環(huán)境中之前正常運行的服務(wù)突然不可用了,查看程序日志發(fā)現(xiàn)部分接口訪問時報I/O寫錯誤,nginx acess.log顯示504,error.log顯示 upstream time out.
同時 netstat -apn | grep 6379 | wc -l 檢查發(fā)現(xiàn)redis存在大量連接,進一步檢查發(fā)現(xiàn)其中大多為 SYN_SENT 包,連接大多歸屬于uwsgi 進程。

  因為程序中有很多接口被調(diào)用是會訪問redis, 以為是redis連接池導(dǎo)致,對程序中的redis連接池進行優(yōu)化后重啟服務(wù),剛啟動時一切正常,http 200, 但幾分鐘后服務(wù)再次掛掉,http 504.

檢查系統(tǒng)資源使用情況,發(fā)現(xiàn) kswapd0 進程CPU占用很高,這個進程是當物理內(nèi)存不足時,會將一部分硬盤當做虛擬內(nèi)存來使用, 使用swap分區(qū)與內(nèi)存換頁操作交換數(shù)據(jù),導(dǎo)致CPU占用過高, 再細看發(fā)現(xiàn)redis-server內(nèi)存占用已超過100%:

在這里插入圖片描述

進入redis中查看info memory和各存儲數(shù)據(jù)的key下數(shù)據(jù)量,果然存在大量未處理完畢的數(shù)據(jù)。

到此問題終于是找到了。

設(shè)置redis最大占用內(nèi)存

# 編輯redis配置文件,加入最大內(nèi)存使用限制,我根據(jù)服務(wù)器的情況設(shè)置為3G
maxmemory 3221225472

設(shè)置redis數(shù)據(jù)過期策略:

redis中有6種過期策略:

# 根據(jù)LRU算法生成的過期時間來刪除
# volatile-lru -> remove the key with an expire set using an LRU algorithm
# 根據(jù)LRU算法刪除任何key。
# allkeys-lru -> remove any key accordingly to the LRU algorithm
# 根據(jù)過期設(shè)置來隨機刪除key。
# volatile-random -> remove a random key with an expire set
# 無差別隨機刪。
# allkeys-random -> remove a random key, any key
# 根據(jù)最近過期時間來刪除(輔以TTL)
# volatile-ttl -> remove the key with the nearest expire time (minor TTL)
# 誰也不刪,直接在寫操作時返回錯誤。
# noeviction -> don't expire at all, just return an error on write operations

在redis配置文件中設(shè)置過期策略為:maxmemory-policy allkeys-lru

  一開始是設(shè)置為volatile-lru的,但是該策略只是清除設(shè)置過期時間的key值,因為很多key并沒有設(shè)置過期時間。因此修改為maxmemory-policy allkeys-lru,指明非活躍近期很少用的key值清除.

  在使用maxmemory-policy allkeys-lru策略時,內(nèi)存超限后將不再存儲數(shù)據(jù),但數(shù)據(jù)的讀取刪除操作不會受影響,超限時顯示錯誤

OOM command not allowed when used memory > 'maxmemory'

在這里插入圖片描述

重啟程序,至此服務(wù)終于正常運行。

總結(jié):本次的問題歸根結(jié)底是redis中存儲入了大量臟數(shù)據(jù),但數(shù)據(jù)處理并沒有及時的清理掉這部分數(shù)據(jù),最終導(dǎo)致服務(wù)停滯,allkeys-lru策略有可能會將長期未用但實際有用的數(shù)據(jù)清理掉,所以還是應(yīng)優(yōu)化數(shù)據(jù)處理為主。

到此這篇關(guān)于redis 限制內(nèi)存使用大小的實現(xiàn)的文章就介紹到這了,更多相關(guān)redis 限制內(nèi)存內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Redis數(shù)據(jù)遷移的多種方法詳解

    Redis數(shù)據(jù)遷移的多種方法詳解

    在現(xiàn)代的分布式系統(tǒng)中,Redis作為一種高性能的鍵值存儲數(shù)據(jù)庫,被廣泛應(yīng)用于緩存、消息隊列、會話存儲等場景,隨著業(yè)務(wù)的發(fā)展,Redis實例的數(shù)據(jù)遷移需求也變得越來越常見,本文將詳細介紹Redis數(shù)據(jù)遷移的多種方法,并通過命令行工具幫助你輕松完成遷移任務(wù)
    2025-01-01
  • K8s部署Redis主從集群教程

    K8s部署Redis主從集群教程

    本文介紹了在Kubernetes環(huán)境下搭建Redis集群的詳細步驟,包括環(huán)境準備、安裝NFS、創(chuàng)建PV卷、搭建Redis集群、集群初始化、主從切換測試以及開放外網(wǎng)端口等內(nèi)容
    2025-01-01
  • NestJS+Redis實現(xiàn)手寫一個限流器

    NestJS+Redis實現(xiàn)手寫一個限流器

    限流是大型系統(tǒng)必備的保護措施,本文將結(jié)合redis , lua 腳本 以及 Nestjs Guard 來實現(xiàn) 限流的效果,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-11-11
  • Redis緩存空間優(yōu)化實踐詳解

    Redis緩存空間優(yōu)化實踐詳解

    緩存Redis,是我們最常用的服務(wù),其適用場景廣泛,被大量應(yīng)用到各業(yè)務(wù)場景中。也正因如此,緩存成為了重要的硬件成本來源,我們有必要從空間上做一些優(yōu)化,降低成本的同時也會提高性能,本文通過代碼示例介紹了redis如何優(yōu)化緩存空間,需要的朋友可以參考一下
    2023-04-04
  • Redis鏈表底層實現(xiàn)及生產(chǎn)實戰(zhàn)

    Redis鏈表底層實現(xiàn)及生產(chǎn)實戰(zhàn)

    Redis 的 List 是一個雙向鏈表,鏈表中的每個節(jié)點都包含了一個字符串。是redis中最常用的數(shù)據(jù)結(jié)構(gòu)之一,本文主要介紹了Redis鏈表底層實現(xiàn)及生產(chǎn)實戰(zhàn),文中通過示例代碼介紹的非常詳細,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • Redis?中使用?list,streams,pub/sub?幾種方式實現(xiàn)消息隊列的問題

    Redis?中使用?list,streams,pub/sub?幾種方式實現(xiàn)消息隊列的問題

    這篇文章主要介紹了Redis?中使用?list,streams,pub/sub?幾種方式實現(xiàn)消息隊列,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-03-03
  • 簡單粗暴的Redis數(shù)據(jù)備份和恢復(fù)方法

    簡單粗暴的Redis數(shù)據(jù)備份和恢復(fù)方法

    這里我們來講解一個簡單粗暴的Redis數(shù)據(jù)備份和恢復(fù)方法,有一個在不同主機上遷移Redis數(shù)據(jù)的示例,還有一個備份腳本實現(xiàn)的關(guān)鍵點提示,一起來看一下:
    2016-06-06
  • SpringBoot整合Redis實現(xiàn)序列化存儲Java對象的操作方法

    SpringBoot整合Redis實現(xiàn)序列化存儲Java對象的操作方法

    這篇文章主要介紹了SpringBoot整合Redis實現(xiàn)序列化存儲Java對象,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-03-03
  • redis客戶端實現(xiàn)高可用讀寫分離的方式詳解

    redis客戶端實現(xiàn)高可用讀寫分離的方式詳解

    基于sentienl 獲取和動態(tài)感知 master、slaves節(jié)點信息的變化,我們的讀寫分離客戶端就能具備高可用+動態(tài)擴容感知能力了,接下來通過本文給大家分享redis客戶端實現(xiàn)高可用讀寫分離的方式,感興趣的朋友一起看看吧
    2021-07-07
  • 基于redis樂觀鎖實現(xiàn)并發(fā)排隊

    基于redis樂觀鎖實現(xiàn)并發(fā)排隊

    這篇文章主要介紹了基于redis樂觀鎖實現(xiàn)并發(fā)排隊的相關(guān)資料,需要的朋友可以參考下
    2022-12-12

最新評論

郎溪县| 志丹县| 东宁县| 景谷| 万盛区| 定安县| 轮台县| 永春县| 越西县| 堆龙德庆县| 寿光市| 潼南县| 弥勒县| 香港 | 铜梁县| 敦煌市| 江山市| 芜湖市| 紫金县| 芜湖县| 铁岭县| 沧州市| 鲜城| 广河县| 赣榆县| 外汇| 西城区| 苗栗县| 南宁市| 定陶县| 遂平县| 黄龙县| 东海县| 岚皋县| 商城县| 洮南市| 黄平县| 阜阳市| 普定县| 澳门| 尼勒克县|