Share via


Kubernetes 主控的用戶端應用程式

來自多個 Pod 的用戶端連線

當您有多個 Pod 連線到 Redis 伺服器時,請確定已使用交錯的方式建立來自 Pod 的新連線。 如果多個 Pod 在短時間內不是以交錯方式啟動,就會造成建立的用戶端連線數目遽增。 大量連線會導致 Redis 伺服器上的高負載,而且可能會導致逾時。

要同時關閉多個 Pod 時,請避免相同的情境。 無法交錯關機可能會導致連線數目急遽下降,從而造成 CPU 壓力。

足夠的 Pod 資源

請確定執行用戶端應用程式的 Pod 已獲得足夠的 CPU 和記憶體資源。 如果用戶端應用程式執行接近其資源限制,可能會導致逾時。

足夠的節點資源

執行用戶端應用程式的 Pod 可能會受到相同節點上執行的其他 Pod 影響,並節流 Redis 連線或 IO 作業。 因此,請務必確定用戶端應用程式 Pod 執行所在的節點有足夠的記憶體、CPU 和網路頻寬。 在上述任何資源上執行不足可能會導致連線問題。

Linux 型用戶端應用程式和 TCP 設定

如果您的 Azure Cache for Redis 用戶端應用程式是在以 Linux 為基礎的容器上執行,建議您更新一些 TCP 設定。 這些設定詳述於 Linux 所裝載用戶端應用程式的 TCP 設定中。

Istio/Envoy 的潛在連線衝突

目前,Azure Cache for Redis 針對叢集快取使用連接埠 15xxx,將叢集節點公開給用戶端應用程式。 如這裡所述,名為 EnvoyIstio.io 側車 Proxy 也會使用相同的連接埠,而且可能會干擾建立連線,特別是在連接埠 15001 和 15006 上。

搭配使用 Istio 與 Azure Cache for Redis 叢集時,請考慮使用 istio 註釋排除潛在的衝突連接埠。

annotations:
  traffic.sidecar.istio.io/excludeOutboundPorts: "15000,15001,15004,15006,15008,15009,15020"

若要避免連線干擾,建議您:

  • 考慮改用非叢集快取或企業層快取
  • 避免在執行 Azure Cache for Redis 用戶端程式代碼的 Pod 上設定 Istio 側車