Kubernetes 托管的客户端应用程序

来自多个 pod 的客户端连接

如果有多个 Pod 连接到 Redis 服务器,请确保以交错方式创建来自 Pod 的新连接。 如果多个 Pod 在短时间内未交错启动,则会导致创建的客户端连接数突然激增。 连接数较高会导致 Redis 服务器上的负载较高,并可能导致超时。

在同时关闭多个 Pod 时,避免出现此相同情况。 未能以交错方式关闭可能会导致连接数急剧下降,从而造成 CPU 压力。

足够的 Pod 资源

请确保有足够的 CPU 和内存资源支持 Pod 运行客户端应用程序。 如果客户端应用程序的运行接近其资源限制,则可能会导致超时。

足够的节点资源

运行客户端应用程序的 Pod 可能会受同一节点上运行的其他 Pod 的影响,并限制 Redis 连接或 IO 操作。 因此,请务必确保客户端应用程序 Pod 在其上运行的节点具有足够的内存、CPU 和网络带宽。 在上述任何不足量的资源上运行可能会导致连接问题。

Linux 托管客户端应用程序与 TCP 设置

如果 Azure Cache for Redis 客户端应用程序在基于 Linux 的容器上运行,则建议更新某些 TCP 设置。 Linux 托管客户端应用程序的 TCP 设置中详细介绍了这些设置。

与 Istio/Envoy 的潜在连接冲突

目前,Azure Cache for Redis 将端口 15xxx 用于聚集缓存,以向客户端应用程序公开群集节点。 如此文所述,Istio.io 挎斗代理 Envoy 也使用相同的端口,这些端口可能会干扰连接的创建,在端口 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 挎斗