生產redis內存80%警告分析處理


內存80%告警:

2017-03-13早上redis內存出現80%告警異常,處理步驟:

1、  客戶端用info memory 命令查看內存使用情況:

其中used_memory_human:2.5G,機器總內存4G

Swap區已經有15%左右的使用率,說明redis分配內存已經不夠用(used_memeroy>可用最大內存),操作系統開始進行內存與swap空間交換,把內存中舊的或不再使用的內容寫入硬盤上

 

1、  查看生產環境redis.conf文件的配置, 發現redis都是初始的默認配置(沒有專業的運維團隊支持 =。=!),經閱讀相關文檔,初定修改如下的一些默認配置:

1>     timeout 300   //客戶端連接閑置300秒后,連接關閉

修改原因:原先是0,每次連接都會關閉,設置300后,不會頻繁的新建立連接,提升性能;

2>     tcp-keepalive 60  //tcp 心跳包,官方建議配置60s,

修改原因: 可以檢測dead peers,保持連接可用;

3>  logfile "/data/logs/redis/redis.log"

修改原因: 配置日志文件地址

4> stop-writes-on-bgsave-error no  //  設置為yes:如果RDB快照激活,最近的寫操作保存失敗后,redis將會停止寫數據, 直到后台的寫程序正常運行

設置為no:如果硬盤有一些問題,redis也會正常運行,不會影響整個流程;

5> slave-read-only yes   //從服務只讀  這個是默認的,可以不配置

6> repl-timeout 300  // repl-timeout 300 主從同步的超時時間

7> maxmemory 2g  // 最大內存配置,如果達到最大值,將會按照內存回收的策略進行回收,如果設置了key的過期時間

# 最大內存策略:如果達到內存限制了,Redis如何選擇刪除key。你可以在下面五個行為里選:
# volatile-lru -> 根據LRU算法刪除帶有過期時間的key。
# allkeys-lru -> 根據LRU算法刪除任何key。
# volatile-random -> 根據過期設置來隨機刪除key, 具備過期時間的key。 
# allkeys->random -> 無差別隨機刪, 任何一個key。 
# volatile-ttl -> 根據最近過期時間來刪除(輔以TTL), 這是對於有過期時間的key 
# noeviction -> 誰也不刪,直接在寫操作時返回錯誤。

 

8> maxmemory-policy  volatile-ttl  //key失效策略,過期時間

9> client-output-buffer-limit slave 1024mb 256mb 0 //客戶端的輸出緩沖區限制,表示:輸出緩沖區達到1024mb或者客戶端達到256m時,客戶端立即斷開

 

以上就是內存異常后,做的一些redis配置的修改。

此外,還擴展了redis的內存,從原先的4g擴展到8g,目前運行穩定,緩存數據保持在2.5-3g之間。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM