針對 Azure Cache for Redis 伺服器問題進行疑難排解
本節討論 Azure Cache for Redis 伺服器或裝載 Azure Cache for Redis 的任何虛擬機器條件導致的問題。
注意
本指南中的數個疑難排解步驟包含如何執行 Redis 命令和監視各種效能度量的指示。 如需詳細資訊和指示,請參閱 其他資訊 一節中的文章。
伺服器負載偏高
伺服器負載偏高即 Redis 伺服器忙碌,且無法因應要求導致逾時。 從左側 [資源] 功能表選取 [監視],並檢查快取上的 [伺服器負載] 計量。 在 [見解] 下的 [工作] 窗格中,您會看到 [伺服器負載] 圖表。 或新增計量集至 [計量] 下的 [伺服器負載]。
下列一些選項是針對伺服器負載偏高的考量。
擴大或擴增
擴增可以新增更多分區,所以負載會分散在多個 Redis 程序。 此外,請考慮使用更多 CPU 核心擴大為較大的快取大小。 如需詳細資訊,請參閱 Azure Cache for Redis 規劃的常見問題。
用戶端連線數目的快速變更
如需詳細資訊,請參閱避免用戶端連線尖峰。
長時間執行或成本高昂的命令
本節已移至其他地方。 如需詳細資訊,請參閱長時間執行的命令。
調整大小
調整作業需要大量 CPU 和記憶體,因為該作業可能需要在節點周圍移動資料,並變更叢集拓撲。 如需詳細資訊,請參閱調整。
伺服器維護
如果 Azure Cache for Redis 發生容錯移轉,故障節點所有的用戶端連線會傳輸至仍在執行的節點。 伺服器負載可能因連線增加達到峰值。 您可以嘗試重新啟動用戶端應用程式,讓所有用戶端連線在兩個節點間重新建立和重新分配。
高記憶體用量
伺服器上的記憶體壓力可能導致各種效能問題,並延遲處理要求。 達到記憶體壓力時,系統會將資料分頁至磁碟,導致系統大幅降低速度。
以下是一些記憶體壓力可能的原因︰
- 接近容量上限的資料會填滿快取
- Redis 伺服器會顯示高記憶體片段
負載模式儲存大小極端不同的資料時,可能導致記憶體片段。 例如,資料大小橫跨 1 KB 和 1 MB 時,可能發生記憶體片段。 從現有的記憶體刪除 1 KB 索引鍵後,1 MB 索引鍵即無法放入,因而導致片段。 以此類推,如果刪除 1 MB 索引鍵並新增 1.5 MB 索引鍵,後者無法放入現有的回收記憶體, 這導致未使用的可用記憶體,並產生更多的片段。
如果used_memory_rss
值高於計量的 1.5 倍used_memory
,則記憶體會出現片段。 下列情況時,片段可能導致問題:
- 記憶體使用量接近快取的記憶體限制上限,或
UsedMemory_RSS
高於記憶體限制上限,可能導致記憶體中的分頁錯誤。
如果快取已是碎片,並在高記憶體壓力下執行,則系統會執行容錯移轉以嘗試復原 Resident Set Size (RSS) 記憶體。
Redis 透過 INFO 命令來公開兩個統計資料、used_memory
和 used_memory_rss
,其可協助您識別問題。 您可以使用入口網站來檢視這些計量。
驗證 maxmemory-reserved
和 maxfragmentationmemory-reserved
值的設定正確。
您可以進行幾項可能的變更,以協助讓記憶體使用量保持良好狀況:
- 設定記憶體原則 並在金鑰上設定到期時間。 如果您的記憶體分散,此原則可能不足以應付。
- 設定 maxmemory-reserved 值 ,讓此值大到足以彌補記憶體分散情形。
- 針對計量建立警示 (例如已使用的記憶體),以及早獲得關於潛在影響的通知。
- 調整為包含更多記憶體容量、較大的快取大小。 如需詳細資訊,請參閱 Azure Cache for Redis 規劃的常見問題。
如需記憶體管理的建議,請參閱記憶體管理的最佳做法。
長時間執行的命令
本節已移至其他地方。 如需詳細資訊,請參閱長時間執行的命令。
伺服器端的頻寬限制
本節已移至其他地方。 如需詳細資訊,請參閱網路頻寬限制。