跳至內容

為什麼我的自我管理 ElastiCache 叢集中會出現「超出網路限額」指標?

1 分的閱讀內容
0

我在 Amazon ElastiCache 環境中看到「超出網路限額」指標。

簡短描述

當應用程式工作負載超過基礎 ElastiCache 節點的網路功能時,就可能會發生流量重塑。若要追蹤流量重塑,請使用下列指標:

  • NetworkBandwidthInAllowanceExceeded 和 NetworkBandwidthOutAllowanceExceeded
  • NetworkPacketsPerSecondAllowanceExceeded
  • NetworkConntrackAllowanceExceeded

解決方法

NetworkBandwidthInAllowanceExceeded 和 NetworkBandwidthOutAllowanceExceeded

NetworkBandwidthInAllowanceExceededNetworkBandwidthOutAllowanceExceeded 指標會追蹤傳輸量超過彙總頻寬限制時,ElastiCache 重塑的網路封包數目。

當您檢查 NetworkBandwidthInAllowanceExceededNetworkBandwidthOutAllowanceExceeded 時,您也必須檢查 Amazon CloudWatch 中的 NetworkBytesInNetworkBytesOut 指標。當 CloudWatch 頻寬使用量指標 NetworkBytesInNetworkBytesOut 低於節點層級限制時,網路效能指標可能會顯示 ElastiCache 超出限額。如需詳細資訊,請參閱監控執行個體頻寬

**注意:**即使平均頻寬在限制範圍內,小規模的流量爆量也可能導致流量重塑。如果這些頻寬限額指標偶爾出現峰值,但對應用程式端沒有影響,則無需採取進一步措施。由於 Valkey 和 Redis OSS 使用 TCP,因此 TCP 會重新傳輸遺失的封包。

如果這些頻寬限額指標持續偏高,且您的應用程式遇到延遲問題,請檢查發生延遲問題時的時間戳記。如果錯誤時間戳記與指標峰值的時間相匹配,請擴展叢集規模。如需詳細資訊,請參閱擴展自行設計的叢集

此外,請檢閱叢集的快取節點類型。如果應用程式的工作負載經常突發性地超過基準頻寬,那麼就有可能會觸發流量重塑。如需詳細資訊,請參閱可用執行個體頻寬

**注意:**對於 ElastiCache 寫入主要節點的每個位元組,ElastiCache 都會將相同的資訊複寫到所有其他複本。當叢集嘗試處理複寫待辦項目時,具有小節點類型、多個複本和密集寫入請求的叢集可能會出現問題。這種待辦項目可能會導致主節點上的 NetworkBandwidthOutAllowanceExceeded 值過高。

若要確定導致應用程式端指標激增的原因,請尋找對多索引鍵進行操作的命令。其中包括以下範例:

  • MGET
  • MSET
  • HGETALL

如果您使用多個大型索引鍵 *例如大型 JSON 物件或雜湊值),則可能會超過節點類型的頻寬限制。然後,ElastiCache 會根據目前負載捨棄多餘的流量或將其新增至佇列。

NetworkPacketsPerSecondAllowanceExceeded

如果此指標的值不是 0,則表示基礎快取節點的網路使用量超過了每秒封包數 (PPS) 限制。此限制是根據你所使用的節點類型而定。ElastiCache 會捨棄超過節點限制的多餘封包,或將其排入佇列。

對於那些驅動小請求每秒高查詢數 (QPS) 的應用程式,節點可能會超過 PPS 限制。若要判斷命令執行速率,請針對每個命令資料類型使用 CloudWatch 指標。如需詳細資訊,請參閱 Valkey 和 Redis OSS 的指標

若要解決此問題,您可以暫時將叢集擴展到更大的節點類型。如果作業讀取量很大,那麼您可以為叢集或碎片新增更多讀取複本來分散負載。對於啟用叢集模式 (CME) 的叢集,如果作業寫入量很大,則新增更多碎片來擴展叢集。

**注意:**對於停用叢集模式 (CMD) 的叢集,您必須將叢集移至較大的節點,以擴展寫入作業。

NetworkConntrackAllowanceExceeded

如果此指標的值不是 0,則 ElastiCache 超出了所有節點安全群組中追蹤的最大連線數。達到連線限制後,新連線會失敗,直到 ElastiCache 關閉現有連線。如需詳細資訊,請參閱 Amazon Elastic Compute Cloud (Amazon EC2) 安全群組連線追蹤。

當工作負載建立大量網路連線,且未正確關閉這些連線時,這些連線在伺服器端仍會保持開啟狀態。這些連線會保持閒置狀態,並導致連線追蹤耗盡。然後,在 ElastiCache 關閉現有連線前,ElastiCache 將無法接受新連線。

若要解決 ElastiCache 中的此問題,請使用逾時參數來檢閱和修改閒置連線逾時。設定 ElastiCache 伺服器的參數,使其在空閒一段時間後關閉連線。

若要在應用程式端解決此問題,請使用連線集區設定來重複使用現有連線,並降低 NewConnections 的速率。如需詳細資訊,請參閱最佳做法: Redis clients 和 Amazon ElastiCache for Redis

注意:伺服器端的逾時參數和用戶端的連線集區設定都可以管理連線的建立,並且需要從應用程式進行負載測試。對您的應用程式進行負載測試,以確定逾時和連線集區設定的最佳組態。

相關資訊

使用 CloudWatch 指標進行監控

擴展 ElastiCache

網路

Redis OSS 2.6.13 參數

Amazon EC2 執行個體層級網路效能指標可揭示全新見解

AWS 官方已更新 1 年前