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
Zainstaluj serwer Redis typu open source na maszynach wirtualnych klienta, których 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.
Maszyna wirtualna klienta używana do testowania powinna znajdować się w tym samym regionie co wystąpienie usługi Azure Cache for Redis.
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.
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.
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.Redis-benchmark
domyślnie używa portu 6379. Użyj parametru-p
, aby zastąpić to ustawienie. Jeśli-p
używasz protokołu SSL/TLS (port 6380) lub używasz warstwy Enterprise (port 10000).Jeśli używasz wystąpienia usługi Azure Cache for Redis korzystającego z klastrowania, musisz dodać
--cluster
parametr do poleceniaredis-benchmark
. Pamięci podręczne w warstwie przedsiębiorstwa korzystające z klastrowania przedsiębiorstwa mogą być traktowane jako nieklastrowane pamięci podręczne i nie wymagają tego ustawienia.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.
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.
W pamięciach podręcznych C0 i C1 Standard, podczas gdy wewnętrzne skanowanie usługi Defender jest uruchomione na maszynach wirtualnych, mogą wystąpić krótkie skoki obciążenia serwera nie spowodowane wzrostem liczby żądań pamięci podręcznej. Zobaczysz większe opóźnienie żądań, podczas gdy wewnętrzne skanowania w usłudze Defender są uruchamiane w tych warstwach kilka razy dziennie. Pamięci podręczne w warstwach C0 i C1 mają tylko jeden rdzeń do multitask, dzieląc pracę obsługi wewnętrznych żądań skanowania usługi Defender i usługi Redis. Efekt można zmniejszyć, skalując do wyższej warstwy z wieloma rdzeniami procesora CPU, takimi jak C2.
Zwiększony rozmiar pamięci podręcznej w wyższych warstwach pomaga rozwiązać wszelkie problemy z opóźnieniami. Ponadto na poziomie C2 masz obsługę aż 2000 połączeń klienckich.
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 redis-benchmark
i memtier-benchmark
z 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.
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.
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
Testy porównawcze usługi Redis w warstwie 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 |
Testy porównawcze usługi Redis w warstwie 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 (Klastrowanie). 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) | GET żądania na sekundę bez protokołu SSL (rozmiar wartości 1 kB) |
GET żądania 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) | GET żądania na sekundę bez protokołu SSL (rozmiar wartości 1 kB) |
GET żądania 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 w każdym rozmiarze pamięci podręcznej i pojemności można znaleźć w konfiguracji fragmentowania. Skalowanie wyprzedaje jest najbardziej efektywne w przypadku korzystania z zasad klastra systemu operacyjnego.
W poniższych tabelach przedstawiono GET
żądania 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 |