一、 Redis部署結構最佳化建議
1. Master不做AOF或RDB持久化,Slave做AOF持久化,建議同時做RDB持久化
#2.所有Master全部增加Slave
3. Master掛載Slave不超過2個,採用M-S-S方式掛載。若想確保高可用,即主從切換,可採用Keepalived機制.
備註:以上是基於Redis部署結構不合理提出的建議,同時也參考了新浪微博、淘寶架構中Redis優化方案給出
二、 Redis配置最佳化建議
1.tcp-keepalive 60
阻止由於某個command執行過長達到timeout逾時時間而被斷開連接,並且可以提高連接錯誤的檢測.
2.stop-writes-on-bgsave-error no
當bgsave快照操作出錯時停止寫資料到磁盤,這樣後面寫入操作均會失敗,為了不影響後續寫入操作,故需將該項值改為no.
3.rdbchecksum no
檢查RDB資料的正確性,會犧牲10%的效能,故建議關閉.
4.auto-aof-rotate-max-size 20gb
auto-aof-rotate-max-total 4 auto-aof-rewrite-percentage 0 (关闭rewrite模式)
將AOF rewrite模式改為rotate模式,即將AOF線上即時Rewrite的功能,切換到線下操作,1份AOF檔切割成多份(類似日誌切割),這樣提升了redis效能的同時提升記憶體的使用率.
5.no-appendfsync-on-rewrite yes
避免新修改資料刷磁碟時出現IO阻塞
備註:以上是基於Redis配置不合理提出的最佳化建議
三、系統核心配置最佳化建議
1.開啟了AOF模式,為了緩解IO阻塞
編輯/etc/sysctl.conf ,加入以下設定:
vm.dirty_background_ratio = 5 vm.dirty_ratio = 10
然後sysctl -p 使設定檔生效.
#2.開啟了RDB模式,為了避免Fork失敗
編輯/etc/sysctl.conf ,改vm.overcommit_memory=1,
#然後sysctl -p 使設定檔生效
備註:以上是基於測試結果給出的系統核心最佳化建議
後續計畫:
以上是從架構角度提出的最佳化建議,後續會從業務角度,分析記憶體類型是否合理、冷熱資料劃分是否合理等
備註:
關於冷熱資料劃分,可使用以下Redis指令進行統計分析:
OBJECT REFCOUNT 此指令主要用於偵錯( debugging),它能夠傳回指定key所對應value被引用的次數.
OBJECT ENCODING 此指令傳回指定key對應value所使用的內部表示(representation)(譯者註:也可以理解為資料的壓縮方式).
OBJECT IDLETIME 此指令傳回指定key對應的value自被儲存之後空閒的時間,以秒為單位(沒有讀寫運算的請求) ,這個值傳回以10秒為單位的秒級別時間,這一點可能在以後的實現中改善。
更多redis知識請關注redis入門教學欄位。
以上是redis效能優化方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!