亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

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

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

問題描述:

發(fā)現(xiàn)生產環(huán)境中之前正常運行的服務突然不可用了,查看程序日志發(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 進程。

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

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

在這里插入圖片描述

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

到此問題終于是找到了。

設置redis最大占用內存

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

設置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ù)過期設置來隨機刪除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配置文件中設置過期策略為:maxmemory-policy allkeys-lru

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

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

OOM command not allowed when used memory > 'maxmemory'

在這里插入圖片描述

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

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

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

相關文章

  • Redis獲取某個大key值的腳本實例

    Redis獲取某個大key值的腳本實例

    這篇文章主要給大家分享介紹了關于Redis獲取某個大key值的一個腳本實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧。
    2018-04-04
  • Redis sentinel節(jié)點如何修改密碼

    Redis sentinel節(jié)點如何修改密碼

    這篇文章主要介紹了Redis sentinel節(jié)點如何修改密碼問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • 淺談Redis在分布式系統(tǒng)中的協(xié)調性運用

    淺談Redis在分布式系統(tǒng)中的協(xié)調性運用

    這篇文章主要介紹了Redis在分布式系統(tǒng)中的協(xié)調性運用,講解了Redis在進程和線程的調度上以及消息隊列中的作用,需要的朋友可以參考下
    2016-03-03
  • 巧用Redis實現(xiàn)分布式鎖詳細介紹

    巧用Redis實現(xiàn)分布式鎖詳細介紹

    大家好,本篇文章主要講的是巧用Redis實現(xiàn)分布式鎖詳細介紹,感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽
    2021-12-12
  • Redis的數(shù)據(jù)類型和內部編碼詳解

    Redis的數(shù)據(jù)類型和內部編碼詳解

    Redis是通過Key-Value的形式來組織數(shù)據(jù)的,而Key的類型都是String,而Value的類型可以有很多,在Redis中最通用的數(shù)據(jù)類型大致有這幾種:String、List、Set、Hash、Sorted Set,下面通過本文介紹Redis數(shù)據(jù)類型和內部編碼,感興趣的朋友一起看看吧
    2024-04-04
  • 淺談Redis如何應對并發(fā)訪問

    淺談Redis如何應對并發(fā)訪問

    本文主要介紹了Redis如何應對并發(fā)訪問,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-08-08
  • Redis常見限流算法原理及實現(xiàn)

    Redis常見限流算法原理及實現(xiàn)

    這篇文章主要介紹了Redis常見限流算法原理及實現(xiàn),限流簡稱流量限速(Rate?Limit)是指只允許指定的事件進入系統(tǒng),超過的部分將被拒絕服務、排隊或等待、降級等處理
    2022-08-08
  • Window下對Redis進行開啟與關閉的操作方法

    Window下對Redis進行開啟與關閉的操作方法

    這篇文章主要介紹了Window下對Redis進行開啟與關閉的操作方法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-11-11
  • Redis保證數(shù)據(jù)不丟失的兩種方法

    Redis保證數(shù)據(jù)不丟失的兩種方法

    Redis 實現(xiàn)數(shù)據(jù)不丟失的關鍵在于使用了多種持久化機制,以確保數(shù)據(jù)在內存和磁盤之間的持久性,本文給大家介紹了Redis保證數(shù)據(jù)不丟失的兩種方法,持久化和集群運行,我們分別來看它們兩的具體實現(xiàn)細節(jié),感興趣的同學跟著小編一起來看看吧
    2023-11-11
  • redis中redisson實現(xiàn)鎖自動延時

    redis中redisson實現(xiàn)鎖自動延時

    redisson作為分布式鎖能夠解決分布式的加鎖解鎖問題,還能夠實現(xiàn)鎖的設置存活時間以及自動續(xù)期,本文主要介紹了redis中redisson實現(xiàn)鎖自動延時,感興趣的可以了解一下
    2024-02-02

最新評論