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