Testowanie wydajności

Testowanie wydajności wystąpienia usługi Redis może być skomplikowanym zadaniem. Wydajność wystąpienia usługi Redis może się różnić w zależności od parametrów, takich jak liczba klientów, rozmiar wartości danych i to, czy jest używane potokowanie. Może również wystąpić kompromis między optymalizacją przepływności lub opóźnieniami.

Na szczęście istnieje kilka narzędzi ułatwiających porównywanie usługi Redis. Dwa z najpopularniejszych narzędzi to redis-benchmark i memtier-benchmark. Ten artykuł koncentruje się na redis-benchmark.

Jak używać narzędzia redis-benchmark

  1. Zainstaluj serwer Redis typu open source na maszynie wirtualnej klienta, której można użyć do testowania. Narzędzie redis-benchmark jest wbudowane w dystrybucję redis typu open source. Postępuj zgodnie z dokumentacją usługi Redis, aby uzyskać instrukcje dotyczące sposobu instalowania obrazu open source.

  2. Maszyna wirtualna klienta używana do testowania powinna znajdować się w tym samym regionie co wystąpienie usługi Azure Cache for Redis.

  3. Upewnij się, że używana maszyna wirtualna klienta ma co najmniej tyle zasobów obliczeniowych i przepustowości , jak testowane wystąpienie pamięci podręcznej.

  4. Skonfiguruj ustawienia izolacji sieciowej i zapory, aby upewnić się, że maszyna wirtualna klienta może uzyskać dostęp do wystąpienia usługi Azure Cache for Redis.

  5. Jeśli używasz protokołu TLS/SSL w wystąpieniu pamięci podręcznej, musisz dodać --tls parametr do polecenia redis-benchmark lub użyć serwera proxy takiego jak stunnel.

  6. Redis-benchmark domyślnie używa portu 6379. Użyj parametru -p , aby zastąpić to ustawienie. Jeśli -pużywasz protokołu SSL/TLS (port 6380) lub używasz warstwy Enterprise (port 10000).

  7. Jeśli używasz wystąpienia usługi Azure Cache for Redis korzystającego z klastrowania, musisz dodać --cluster parametr do polecenia redis-benchmark . Pamięci podręczne w warstwie przedsiębiorstwa korzystające z zasad klastrowania przedsiębiorstwa mogą być traktowane jako nieklastrowane pamięci podręczne i nie wymagają tego ustawienia.

  8. Uruchom polecenie redis-benchmark z poziomu interfejsu wiersza polecenia lub powłoki maszyny wirtualnej. Aby uzyskać instrukcje dotyczące konfigurowania i uruchamiania narzędzia, zapoznaj się z dokumentacją testu porównawczego redis i sekcjami przykładów testów porównawczych redis..

Rekomendacje dotyczące testów porównawczych

  • Ważne jest, aby nie tylko przetestować wydajność pamięci podręcznej w warunkach stałego stanu. Przetestuj również warunki pracy w trybie failover i zmierz obciążenie procesora CPU/serwera w pamięci podręcznej w tym czasie. Możesz uruchomić tryb failover, uruchamiając ponownie węzeł podstawowy. Testowanie w warunkach trybu failover umożliwia wyświetlenie przepływności i opóźnienia aplikacji podczas warunków pracy w trybie failover. Tryb failover może wystąpić podczas aktualizacji lub podczas nieplanowanego zdarzenia. W idealnym przypadku nie chcesz widzieć szczytu obciążenia procesora CPU/serwera do ponad 80% nawet podczas pracy w trybie failover, ponieważ może to mieć wpływ na wydajność.

  • Rozważ użycie wystąpień usługi Azure Cache for Redis w warstwie Enterprise i Premium. Te rozmiary pamięci podręcznej mają lepsze opóźnienie sieci i przepływność, ponieważ działają na lepszym sprzęcie.

  • Warstwa Enterprise ma zazwyczaj najlepszą wydajność, ponieważ usługa Redis Enterprise umożliwia podstawowemu procesowi usługi Redis korzystanie z wielu procesorów wirtualnych. Warstwy oparte na usłudze Redis typu open source, takie jak Standardowa i Premium, mogą korzystać tylko z jednego procesora wirtualnego dla procesu Redis na fragment.

  • Testowanie porównawcze warstwy Flash przedsiębiorstwa może być trudne, ponieważ niektóre klucze są przechowywane na pamięci DRAM, podczas gdy niektóre są przechowywane na dysku flash NVMe. Klucze w teście porównawczym DRAM prawie tak szybko jak wystąpienie warstwy Enterprise, ale klucze na dysku flash NVMe są wolniejsze. Ponieważ warstwa Flash przedsiębiorstwa inteligentnie umieszcza najczęściej używane klucze do pamięci DRAM, upewnij się, że konfiguracja testu porównawczego jest zgodna z rzeczywistym użyciem, którego oczekujesz. Rozważ użycie parametru -r w celu losowania, do których kluczy uzyskuje się dostęp.

  • Użycie protokołu TLS/SSL zmniejsza wydajność przepływności, co można wyraźnie zobaczyć w przykładowych danych porównawczych w poniższych tabelach.

  • Mimo że serwer Redis jest jednowątkowy, skalowanie w górę ma tendencję do poprawy wydajności przepływności. Procesy systemowe mogą używać dodatkowych procesorów wirtualnych zamiast udostępniania procesorów wirtualnych używanych przez proces redis. Skalowanie w górę jest szczególnie przydatne w warstwach Enterprise i Enterprise Flash, ponieważ usługa Redis Enterprise nie jest ograniczona do jednego wątku. Aby uzyskać więcej informacji, zobacz Najlepsze rozwiązania dotyczące warstwy przedsiębiorstwa.

  • W warstwie Premium skalowanie w poziomie, klastrowanie jest zwykle zalecane przed skalowaniem w górę. Klastrowanie umożliwia serwerowi Redis używanie większej liczby procesorów wirtualnych przez fragmentowanie danych. Przepływność powinna zwiększać się w przybliżeniu liniowo podczas dodawania fragmentów w tym przypadku.

Przykłady testów porównawczych redis

Konfiguracja przed testem: przygotuj wystąpienie pamięci podręcznej z danymi wymaganymi do testowania opóźnienia i przepływności:

redis-benchmark -h yourcache.redis.cache.windows.net -a yourAccesskey -t SET -n 10 -d 1024

Aby przetestować opóźnienie: Przetestuj żądania GET przy użyciu ładunku 1k:

redis-benchmark -h yourcache.redis.cache.windows.net -a yourAccesskey -t GET -d 1024 -P 50 -c 4

Aby przetestować przepływność: Żądania GET potoku z ładunkiem 1k:

redis-benchmark -h yourcache.redis.cache.windows.net -a yourAccesskey -t  GET -n 1000000 -d 1024 -P 50  -c 50

Aby przetestować przepływność pamięci podręcznej w warstwie Podstawowa, Standardowa lub Premium przy użyciu protokołu TLS: Żądania GET potoku z ładunkiem 1k:

redis-benchmark -h yourcache.redis.cache.windows.net -p 6380 -a yourAccesskey -t  GET -n 1000000 -d 1024 -P 50 -c 50 --tls

Aby przetestować przepływność pamięci podręcznej flash przedsiębiorstwa lub przedsiębiorstwa bez protokołu TLS przy użyciu trybu klastra systemu operacyjnego: Potokowe żądania GET z ładunkiem 1k:

redis-benchmark -h yourcache.region.redisenterprise.cache.azure.net -p 10000 -a yourAccesskey -t  GET -n 1000000 -d 1024 -P 50 -c 50 --cluster

Przykładowe dane testu porównawczego wydajności

W poniższych tabelach przedstawiono maksymalne wartości przepływności zaobserwowane podczas testowania różnych rozmiarów pamięci podręcznych Flash w warstwie Standardowa, Premium, Enterprise i Enterprise. Użyliśmy z redis-benchmark maszyny wirtualnej platformy Azure IaaS względem punktu końcowego usługi Azure Cache for Redis. Liczby przepływności dotyczą tylko poleceń GET. Zazwyczaj polecenia SET mają niższą przepływność. Te liczby są zoptymalizowane pod kątem przepływności. Rzeczywista przepływność w akceptowalnych warunkach opóźnienia może być niższa.

Następująca konfiguracja została użyta do porównania przepływności dla warstw Podstawowa, Standardowa i Premium:

redis-benchmark -h yourcache.redis.cache.windows.net -a yourAccesskey -t  GET -n 1000000 -d 1024 -P 50  -c 50

Uwaga

Te wartości nie są gwarantowane i nie ma umowy SLA dla tych liczb. Zdecydowanie zalecamy przeprowadzenie własnych testów wydajnościowych w celu określenia odpowiedniego rozmiaru pamięci podręcznej dla aplikacji. Te liczby mogą się zmieniać, gdy okresowo publikujemy nowsze wyniki.

Ważne

Firma Microsoft okresowo aktualizuje podstawową maszynę wirtualną używaną w wystąpieniach pamięci podręcznej. Może to zmienić charakterystykę wydajności z pamięci podręcznej na pamięć podręczną i z regionu na region. Przykładowe wartości testów porównawczych na tej stronie odzwierciedlają sprzęt pamięci podręcznej starszej generacji w jednym regionie. Możesz zobaczyć lepsze lub inne wyniki w praktyce.

Warstwa Standardowa

Wystąpienie Rozmiar Procesory wirtualne Oczekiwana przepustowość sieci (Mb/s) Żądania GET na sekundę bez protokołu SSL (rozmiar wartości 1 kB) Żądania GET na sekundę z protokołem SSL (rozmiar wartości 1 kB)
C0 250 MB Udostępniona 100 15 000 7500
C1 1 GB 1 500 38,000 20,720
C2 2.5 GB 2 500 41,000 37,000
C3 6 GB 100 1000 100 000 90,000
C4 13 GB 2 500 60 000 55,000
C5 26 GB 100 1000 102,000 93,000
C6 53 GB 8 2000 126,000 120 000

Warstwa Premium

Wystąpienie Rozmiar Procesory wirtualne Oczekiwana przepustowość sieci (Mb/s) Żądania GET na sekundę bez protokołu SSL (rozmiar wartości 1 kB) Żądania GET na sekundę z protokołem SSL (rozmiar wartości 1 kB)
P1 6 GB 2 1500 180,000 172,000
P2 13 GB 100 3000 350,000 341,000
P3 26 GB 100 3000 350,000 341,000
P4 53 GB 8 6000 400 000 373,000
P5 120 GB 32 6000 400 000 373,000

Ważne

Wystąpienia P5 w regionach Chiny Wschodnie i Chiny Północne używają 20 rdzeni, a nie 32 rdzeni.

Warstwy Flash dla przedsiębiorstw i przedsiębiorstw

Warstwy Flash Enterprise i Enterprise oferują wybór zasad klastra: Enterprise i OSS. Zasady klastra przedsiębiorstwa to prostsza konfiguracja, która nie wymaga od klienta obsługi klastrowania. Z drugiej strony zasady klastra systemu operacyjnego używają protokołu klastra Redis do obsługi wyższych przepływności. W większości przypadków zalecamy używanie zasad klastra systemu operacyjnego. Aby uzyskać więcej informacji, zobacz Clustering on Enterprise (Klastrowanie w przedsiębiorstwie). Testy porównawcze dla obu zasad klastra są wyświetlane w poniższych tabelach.

Następująca konfiguracja została użyta do porównywania przepływności dla warstw flash Enterprise i Enterprise:

redis-benchmark -h yourcache.region.redisenterprise.cache.azure.net -p 10000 -a yourAccesskey -t GET -n 10000000 -d 1024 -P 50 -c 50 --threads 32

Uwaga

Ta konfiguracja jest prawie identyczna z konfiguracją używaną do porównywania porównawczych warstw Podstawowa, Standardowa i Premium. Poprzednia konfiguracja nie wykorzystała jednak w pełni większej wydajności obliczeniowej warstw przedsiębiorstwa. Dodatkowe żądania i wątki zostały dodane do tej konfiguracji, aby zademonstrować pełną wydajność.

Zasady klastra przedsiębiorstwa

Wystąpienie Rozmiar Procesory wirtualne Oczekiwana przepustowość sieci (Mb/s) Żądania GET na sekundę bez protokołu SSL (rozmiar wartości 1 kB) Żądania GET na sekundę z protokołem SSL (rozmiar wartości 1 kB)
E10 12 GB 100 4000 300,000 207,000
E20 25 GB 100 4000 680,000 480,000
E50 50 GB 8 8000 1,200,000 900,000
E100 100 GB 16 10,000 1,700,000 1,650,000
F300 384 GB 8 3,200 500,000 390,000
F700 715 GB 16 6,400 500,000 370,000
F1500 1455 GB 32 12,800 530,000 390,000

Zasady klastra systemu operacyjnego

Wystąpienie Rozmiar Procesory wirtualne Oczekiwana przepustowość sieci (Mb/s) Żądania GET na sekundę bez protokołu SSL (rozmiar wartości 1 kB) Żądania GET na sekundę z protokołem SSL (rozmiar wartości 1 kB)
E10 12 GB 100 4000 1,400,000 1 000 000
E20 25 GB 100 4000 1,200,000 900,000
E50 50 GB 8 8000 2,300,000 1,700,000
E100 100 GB 16 10,000 3,000,000 2,500,000
F300 384 GB 8 3,200 1,500,000 1,200,000
F700 715 GB 16 6,400 1,600,000 1,200,000
F1500 1455 GB 32 12,800 1,600,000 1,110,000

Warstwy flash przedsiębiorstwa i przedsiębiorstwa — skalowane w poziomie

Oprócz skalowania w górę, przechodząc do większego rozmiaru pamięci podręcznej, możesz zwiększyć wydajność, skalując wyprzedanie. W warstwach Enterprise skalowanie w poziomie jest nazywane zwiększeniem pojemności wystąpienia pamięci podręcznej. Wystąpienie pamięci podręcznej domyślnie ma pojemność dwuznakowego węzła podstawowego i repliki. Wystąpienie pamięci podręcznej przedsiębiorstwa o pojemności czterech wskazuje, że wystąpienie zostało przeskalowane w poziomie przez współczynnik dwóch. Skalowanie na out zapewnia dostęp do większej ilości pamięci i procesorów wirtualnych. Szczegółowe informacje na temat liczby procesorów wirtualnych używanych przez podstawowy proces usługi Redis przy każdym rozmiarze pamięci podręcznej i pojemności można znaleźć na stronie Najlepsze rozwiązania dotyczące warstw przedsiębiorstwa. Skalowanie wyprzedaje jest najbardziej efektywne w przypadku korzystania z zasad klastra systemu operacyjnego.

W poniższych tabelach przedstawiono żądania GET na sekundę w różnych pojemnościach przy użyciu protokołu SSL i rozmiaru wartości 1 kB.

Skalowanie w górę — zasady klastra przedsiębiorstwa

Wystąpienie Pojemność 2 Pojemność 4 Pojemność 6
E10 200,000 830,000 930,000
E20 480,000 710,000 950,000
E50 900,000 1,110,000 1,200,000
E100 1,600,000 1,120,000 1,200,000
Wystąpienie Pojemność 3 Pojemność 9
F300 390,000 640,000
F700 370,000 610,000
F1500 390,000 670,000

Skalowanie w górę — zasady klastra systemu operacyjnego

Wystąpienie Pojemność 2 Pojemność 4 Pojemność 6
E10 1 000 000 1,900,000 2,500,000
E20 900,000 1,700,000 2,300,000
E50 1,700,000 3,000,000 3,900,000
E100 2,500,000 4,400,000 4,900,000
Wystąpienie Pojemność 3 Pojemność 9
F300 1,200,000 2,600,000
F700 1,200,000 2,600,000
F1500 1,100,000 2,800,000

Następne kroki