Tair執行個體的CPU使用率升高會影響整體的輸送量和應用的響應速度,極端情況下甚至會導致應用不可用。當平均CPU使用率高於50%、連續5分鐘內的CPU平均峰值使用率高於90%時,您需要及時關注並排查該問題,以保障應用的穩定運行。
尋找並禁用高消耗命令
高消耗命令:即時間複雜度為O(N)或更高的命令。通常情況下,命令的時間複雜度越高,在執行時會消耗較多的資源,從而導致CPU使用率上升。關於各命令對應的時間複雜度資訊,請參見Redis官網。
由於單線程的特性,Tair在執行高消耗命令時會引發排隊導致應用響應變慢。極端情況下,甚至可能導致執行個體被整體阻塞,引發應用逾時中斷或流量跳過緩衝層直接到達後端的資料庫側,引發雪崩效應。
最佳化熱點Key
現象:
Tair執行個體為叢集架構或讀寫分離架構,執行個體中部分資料節點的CPU使用率高。
解決方案:
- 啟用代理查詢快取功能(Proxy Query Cache),代理節點會緩衝熱點Key對應的請求和查詢結果,當在有效時間內收到同樣的請求時直接返回結果至用戶端,無需和後端的資料分區互動,可改善對熱點Key的發起大量讀請求導致的訪問傾斜。更多資訊,請參見通過Proxy Query Cache最佳化熱點Key問題。
- 在分析相應節點的慢日誌和審計日誌的基礎上,再分析各節點的熱點Key,從而消除或緩解熱點Key。具體操作,請參見即時Top Key統計。
最佳化短串連
現象:
頻繁地建立串連,導致Tair執行個體的大量資源消耗在串連處理上。具體表現為CPU使用率較高,串連數較高,但QPS(每秒訪問次數)未達到預期的情況。
解決方案:
關閉AOF
現象:
Tair執行個體預設開啟了AOF(append-only file),當執行個體處於高負載狀態時,頻繁地執行AOF會一定程度上導致CPU使用率升高。
解決方案:
在業務允許的前提下,您可以考慮關閉持久化。另外將Tair資料備份時間設定到低訪問/維護時間視窗內,降低影響。
最佳化Proxy節點串連與管道的使用
現象:
Tair執行個體為叢集架構或讀寫分離架構,通過控制台的效能趨勢查看Proxy節點的CPU使用率不均衡,差額過大。
解決方案:
- 通過效能趨勢功能,確認串連使用率是否均衡。具體操作,請參見效能趨勢。
- 根據串連使用率是否均衡,選擇下述操作:
- 均衡:重啟業務所屬的用戶端或Proxy節點使串連重分配。
- 不均衡:通常因pipeline或batch的操作規模過大引起,需要減少對應的操作規模,例如將其拆分為多個操作來執行。
評估服務能力
經過上述方法最佳化後,在業務正常啟動並執行情況下,還是經常遇到執行個體整體的負載較高(平均CPU使用率在50%以上),可能存在效能瓶頸。
首先,應排查是否存在異常的業務訪問,例如異常的命令、來自某台應用主機的異常訪問等,此類情況需要從業務上進行最佳化。如果均為正常訪問,此時的高負載是正常業務行為,為保障業務平穩運行,建議升級執行個體的規格,將其升級為叢集架構或讀寫分離架構。關於如何升級執行個體,請參見變更執行個體配置。