Aplikacja kliencka hostowana w usłudze Kubernetes

Połączenia klienta z wielu zasobników

Jeśli masz wiele zasobników łączących się z serwerem Redis, upewnij się, że nowe połączenia z zasobników są tworzone w sposób zdumiewający. Jeśli wiele zasobników rozpoczyna się w krótkim czasie bez zdumiewającego, powoduje nagły wzrost liczby utworzonych połączeń klienckich. Duża liczba połączeń prowadzi do dużego obciążenia serwera Redis i może powodować przekroczenia limitu czasu.

Należy unikać tego samego scenariusza podczas zamykania wielu zasobników w tym samym czasie. Niepowodzenie zamykania może spowodować gwałtowny spadek liczby połączeń, które prowadzą do ciśnienia procesora CPU.

Wystarczające zasoby zasobnika

Upewnij się, że zasobnik z uruchomioną aplikacją kliencczą ma wystarczającą ilość zasobów procesora CPU i pamięci. Jeśli aplikacja kliencka jest uruchomiona blisko limitów zasobów, może to spowodować przekroczenie limitu czasu.

Wystarczające zasoby węzłów

Na zasobnik z uruchomioną aplikacją kliencką mogą wpływać inne zasobniki uruchomione w tym samym węźle, powodując ograniczanie połączeń usługi Redis lub operacji we/wy. Dlatego zawsze upewnij się, że węzeł, na którym działają zasobniki aplikacji klienckiej, ma wystarczającą ilość pamięci, procesora CPU i przepustowości sieci. Niska liczba tych zasobów może spowodować problemy z łącznością.

Aplikacje klienckie hostowane w systemie Linux i ustawienia protokołu TCP

Jeśli aplikacja kliencka usługi Azure Cache for Redis działa w kontenerze opartym na systemie Linux, zalecamy zaktualizowanie niektórych ustawień protokołu TCP. Te ustawienia są szczegółowo opisane w temacie Ustawienia PROTOKOŁU TCP dla aplikacji klienckich hostowanych w systemie Linux.

Potencjalna kolizja połączenia z Istio/Envoy

Obecnie usługa Azure Cache for Redis używa portów 15xxx dla klastrowanych pamięci podręcznych w celu uwidocznienia węzłów klastra w aplikacjach klienckich. Jak opisano tutaj, te same porty są również używane przez serwer proxy Istio.io przyczepki o nazwie Envoy i mogą zakłócać tworzenie połączeń, zwłaszcza na porcie 15001 i 15006.

W przypadku korzystania z rozwiązania Istio z klastrem usługi Azure Cache for Redis rozważ wykluczenie potencjalnych portów kolizji z adnotacją istio.

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

Aby uniknąć interferencji połączeń, zalecamy:

  • Rozważ użycie nieklastrowanej pamięci podręcznej lub pamięci podręcznej w warstwie Enterprise zamiast tego
  • Unikaj konfigurowania przyczepek Istio na zasobnikach z uruchomionym kodem klienta usługi Azure Cache for Redis