使用 的常見疑難排解步驟和最佳實務 ElastiCache - Amazon ElastiCache

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用 的常見疑難排解步驟和最佳實務 ElastiCache

下列主題針對您在使用 時可能遇到的錯誤和問題提供疑難排解建議 ElastiCache。如果您發現此處未列出的問題,您可以使用此頁面上的意見回饋按鈕進行報告。

如需常見支援問題的更多疑難排解建議和答案,請造訪 AWS 知識中心

連線問題

如果您無法連線至 ElastiCache 快取,請考慮下列其中一項:

  1. 使用 TLS:如果您在嘗試連線至 ElastiCache 端點時遇到掛載連線,則可能不會TLS在用戶端中使用 。如果您使用 ElastiCache Serverless,傳輸中的加密一律會啟用。請確定您的用戶端正在使用 TLS 連線到快取。進一步了解如何連線至TLS已啟用的快取

  2. VPC: ElastiCache 快取只能在 內存取VPC。確定您存取快取和 ElastiCache 快取的EC2執行個體是在相同的 中建立VPC。或者,您必須啟用VPCEC2執行個體所在的 與您要建立快取VPC的 之間的VPC對等

  3. 安全群組:ElastiCache 使用安全群組來控制對快取的存取。考慮下列各項:

    1. 請確定 ElastiCache 快取所使用的安全群組允許從EC2執行個體傳入存取它。請參閱此處,了解如何在安全群組中正確設定傳入規則。

    2. 請確定 ElastiCache 快取使用的安全群組允許存取快取的連接埠 (無伺服器 6379 和 6380,自行設計 6379)。 ElastiCache 使用這些連接埠接受 Valkey 或 Redis OSS命令。在此處了解如何設定連接埠存取權的詳細資訊

如果連線仍然困難,請參閱 持續性連線問題 以取得其他步驟。

Valkey 或 Redis OSS用戶端錯誤

ElastiCache 無伺服器只能使用支援 Valkey 或 Redis OSS叢集模式通訊協定的用戶端存取。可根據叢集組態,從任一模式下的用戶端存取自行設計的叢集。

如果您的用戶端發生錯誤,請考慮下列事項:

  1. 叢集模式:如果您使用 SELECT命令遇到CROSSLOT錯誤或錯誤,則可能嘗試使用不支援叢集通訊協定的 Valkey 或 Redis OSS用戶端存取已啟用叢集模式的快取。 ElastiCache Serverless 僅支援支援 Valkey 或 Redis OSS叢集通訊協定的用戶端。如果您想要在「停用叢集模式」 (CMD) OSS中使用 Valkey 或 Redis,則必須設計自己的叢集。

  2. CROSSLOT 錯誤:如果您遇到ERR CROSSLOT Keys in request don't hash to the same slot錯誤,您可能嘗試存取不屬於叢集模式快取中相同插槽的金鑰。提醒您, ElastiCache Serverless 一律以叢集模式運作。只有在涉及的所有金鑰都位於相同的雜湊槽中時,才允許涉及多個金鑰的多金鑰操作、交易或 Lua 指令碼。

如需有關設定 Valkey 或 Redis OSS用戶端的其他最佳實務,請檢閱此部落格文章

對 ElastiCache Serverless 中的高延遲進行故障診斷

如果您的工作負載似乎發生高延遲,您可以分析 CloudWatch SuccessfulReadRequestLatencySuccessfulWriteRequestLatency指標,以檢查延遲是否與無 ElastiCache 伺服器有關。這些指標會測量無 ElastiCache 伺服器內部的延遲 - 不包括用戶端與無 ElastiCache 伺服器端點之間的用戶端延遲和網路跳脫時間。

對用戶端延遲進行故障診斷

如果您在用戶端注意到延遲增加,但沒有對應的增加,CloudWatch SuccessfulReadRequestLatency以及測量伺服器端延遲的SuccessfulWriteRequestLatency指標,請考慮下列事項:

  • 確保安全群組允許存取連接埠 6379 和 6380: ElastiCache Serverless 使用主要端點的 6379 連接埠,以及讀取器端點的 6380 連接埠。有些用戶端會為每個新連線建立與兩個連接埠的連線,即使您的應用程式未使用從複本讀取功能。如果您的安全群組不允許傳入存取這兩個連接埠,則建立連線可能需要更長的時間。在此處了解如何設定連接埠存取權的詳細資訊

對伺服器端延遲進行故障診斷

某些變化性和偶爾尖峰不應是造成疑慮的原因。不過,如果Average統計資料顯示急劇增加並持續,您應該檢查 AWS Health Dashboard 和個人運作狀態儀表板以取得詳細資訊。如有必要,請考慮使用 開啟支援案例 AWS Support。

請考慮下列最佳實務和策略,以減少延遲:

  • 啟用從複本讀取:如果您的應用程式允許,建議您在 Valkey 或 Redis OSS用戶端中啟用「從複本讀取」功能,以擴展讀取並實現更低的延遲。啟用時, ElastiCache Serverless 會嘗試將您的讀取請求路由至與用戶端位於相同可用區域 (AZ) 的複本快取節點,以避免跨可用區域網路延遲。請注意,在用戶端中啟用從複本讀取功能表示您的應用程式接受最終的資料一致性。如果您在寫入金鑰後嘗試讀取資料,應用程式可能會收到較舊的資料一段時間。

  • 確保您的應用程式部署在AZs與快取相同的 中:如果您的應用程式未部署在AZs與快取相同的 中,您可能會觀察到更高的用戶端延遲。建立無伺服器快取時,您可以提供應用程式存取快取的子網路,而無 ElastiCache 伺服器則在這些子網路中建立VPC端點。確保您的應用程式部署在相同的 中AZs。否則,您的應用程式在存取快取時可能會產生跨可用區跳轉,導致更高的用戶端延遲。

  • 重複使用連線:ElastiCache 無伺服器請求是透過TLS已啟用的TCP連線使用RESP通訊協定提出。啟動連線 (包括驗證連線,如果已設定) 需要時間,因此第一個請求的延遲高於一般。透過已初始化連線的請求可提供 ElastiCache一致的低延遲。因此,您應該考慮使用連線集區或重複使用現有的 Valkey 或 Redis OSS連線。

  • 擴展速度:ElastiCache 無伺服器隨著請求率的增加自動擴展。請求速率突然大幅增加,速度比無 ElastiCache 伺服器擴展的速度快,可能會導致延遲增加一段時間。 ElastiCache Serverless 通常可以快速提高其支援的請求速率,最多需要 10-12 分鐘才能使請求速率加倍。

  • 檢查長時間執行的命令:某些 Valkey 或 Redis OSS命令,包括大型資料結構上的 Lua 指令碼或命令,可能會長時間執行。若要識別這些命令, 會 ElastiCache 發佈命令層級指標。透過 ElastiCache Serverless,您可以使用 BasedECPUs指標。

  • 限流請求:在無 ElastiCache 伺服器中限流請求時,您可能會遇到應用程式中用戶端延遲增加的情況。當請求在 ElastiCache Serverless 中限流時,您應該會看到 ThrottledRequests ElastiCache Serverless 指標增加。檢閱以下章節,以針對限流請求進行疑難排解。

  • 金鑰和請求的均勻分佈: ElastiCache 在搭配 Valkey 和 Redis 的情況下OSS,每個插槽的金鑰或請求分佈不平均可能會導致一個熱槽,這可能會導致延遲增加。 ElastiCache Serverless 在執行簡單 SET/GET 命令的工作負載中,支援單一插槽上高達 30,000 ECPUs/秒 (90,000 ECPUs/秒,當使用複本讀取時)。我們建議您評估金鑰並請求在插槽之間的分佈,並確保在請求率超過此限制時分佈一致。

對 ElastiCache Serverless 中的限流問題進行故障診斷

在服務導向的架構和分散式系統中,限制各種服務元件處理API呼叫的速率稱為限流。這可平滑尖峰、控制元件輸送量不相符,並在發生非預期的操作事件時允許更可預測的復原。 ElastiCache Serverless 專為這些類型的架構而設計,且大多數 Valkey 或 Redis OSS用戶端已針對限流請求內建重試。某種程度的限流對應用程式來說不一定是問題,但資料工作流程中對延遲敏感的部分如果持續遭到限流,可能會對使用者體驗造成負面影響,並降低系統的整體效率。

當請求在 ElastiCache Serverless 中限流時,您應該會看到 ThrottledRequests ElastiCache Serverless 指標增加。如果您注意到有大量限流請求,請考慮下列事項:

  • 擴展速度:ElastiCache 當您擷取更多資料或提高請求率時,無伺服器會自動擴展。如果您的應用程式擴展速度比無 ElastiCache 伺服器擴展的速度快,那麼您的請求可能會受到限制,而無 ElastiCache 伺服器擴展可能會適應您的工作負載。無 ElastiCache 伺服器通常可以快速增加儲存體大小,最多需要 10-12 分鐘的時間來將快取中的儲存體大小加倍。

  • 金鑰和請求的均勻分佈: ElastiCache 在搭配 Valkey 或 Redis 的情況下OSS,每個插槽的金鑰或請求分佈不平均可能會導致熱插槽。如果單一插槽的請求率超過每秒 30,000 ECPUs個,在執行簡單 SET/GET 命令的工作負載中,熱插槽可能會導致請求限流。

  • 從複本讀取:如果您的應用程式允許,請考慮使用「從複本讀取」功能。大多數 Valkey 或 Redis OSS用戶端可以設定為「規模讀取」,將讀取導向複本節點。此功能可讓您擴展讀取流量。此外,無 ElastiCache 伺服器會自動將從複本請求讀取路由至與您應用程式相同可用區域中的節點,進而降低延遲。啟用從複本讀取時,對於使用簡單 SET/GET 命令的工作負載,您可以在單一插槽ECPUs上達到每秒高達 90,000 個。

相關主題