Zarządzanie pamięcią

Zasady eksmisji

Wybierz zasady eksmisji , które działają dla aplikacji. Domyślne zasady dla Azure Cache for Redis to volatile-lru, co oznacza, że tylko klucze, które mają ustawioną wartość czasu wygaśnięcia z poleceniem takim jak EXPIRE, kwalifikują się do eksmisji. Jeśli żadne klucze nie mają wartości czasu wygaśnięcia, system nie wykluczy żadnych kluczy. Jeśli chcesz, aby system zezwolił na eksmitowany dowolny klucz, jeśli jest obciążony pamięcią, warto rozważyć allkeys-lru te zasady.

Wygaśnięcie kluczy

Ustaw wartość wygaśnięcia na kluczach. Wygaśnięcie powoduje aktywne usunięcie kluczy zamiast czekać na wykorzystanie pamięci. W przypadku eksmisji ze względu na wykorzystanie pamięci może to spowodować większe obciążenie serwera. Aby uzyskać więcej informacji, zobacz dokumentację poleceń EXPIRE i EXPIREAT .

Minimalizuj fragmentację pamięci

Duże wartości mogą spowodować fragmentowanie pamięci podczas eksmisji i może prowadzić do wysokiego użycia pamięci i obciążenia serwera.

Monitorowanie użycia pamięci

Dodaj monitorowanie użycia pamięci, aby mieć pewność, że nie zabraknie pamięci i będzie można skalować pamięć podręczną przed wystąpieniami problemów.

Konfigurowanie ustawienia maxmemory-reserved

Skonfiguruj ustawienie maxmemory-reserved , aby poprawić czas odpowiedzi systemu:

  • Wystarczające ustawienie rezerwacji jest szczególnie ważne w przypadku obciążeń z dużym obciążeniem zapisem lub jeśli przechowujesz wartości 100 KB lub więcej w pamięci podręcznej. Domyślnie podczas tworzenia pamięci podręcznej około 10% dostępnej pamięci jest zarezerwowane dla programu maxmemory-reserved. Kolejne 10% jest zarezerwowane dla programu maxfragmentationmemory-reserved. Możesz zwiększyć ilość zarezerwowaną, jeśli masz duże obciążenia zapisu.

  • Ustawienie maxmemory-reserved konfiguruje ilość pamięci (w MB na wystąpienie w klastrze), która jest zarezerwowana dla operacji innych niż pamięć podręczna, takich jak replikacja podczas pracy w trybie failover. Ustawienie tej wartości pozwala zwiększyć spójność zachowania serwera Redis przy zmianach obciążenia. Ta wartość powinna być wyższa dla obciążeń zapisujących duże ilości danych. Gdy pamięć jest zarezerwowana dla takich operacji, nie jest dostępna do przechowywania danych w pamięci podręcznej. Dozwolony zakres dla maxmemory-reserved elementu to 10% — 60% z maxmemory. Jeśli spróbujesz ustawić te wartości niższe niż 10% lub więcej niż 60%, zostaną ponownie ocenione i ustawione na wartość minimalną 10% i maksymalną 60%. Wartości są renderowane w megabajtach.

  • Ustawienie maxfragmentationmemory-reserved konfiguruje ilość pamięci (w MB na wystąpienie w klastrze), która jest zarezerwowana do uwzględnienia fragmentacji pamięci. Po ustawieniu tej wartości środowisko serwera Redis jest bardziej spójne, gdy pamięć podręczna jest pełna lub bliska pełnej, a współczynnik fragmentacji jest wysoki. Gdy pamięć jest zarezerwowana dla takich operacji, nie jest dostępna do przechowywania danych w pamięci podręcznej. Dozwolony zakres dla maxfragmentationmemory-reserved elementu to 10% — 60% z maxmemory. Jeśli spróbujesz ustawić te wartości niższe niż 10% lub więcej niż 60%, zostaną ponownie ocenione i ustawione na wartość minimalną 10% i maksymalną 60%. Wartości są renderowane w megabajtach.

  • Jedną z rzeczy, które należy wziąć pod uwagę podczas wybierania nowej wartości rezerwacji pamięci (maxmemory-reserved lub maxfragmentationmemory-reserved) jest to, jak ta zmiana może mieć wpływ na pamięć podręczną z dużą ilością danych w nim, które są już uruchomione. Na przykład jeśli masz pamięć podręczną 53 GB z 49 GB danych, a następnie zmień wartość rezerwacji na 8 GB, maksymalna dostępna pamięć dla systemu spadnie do 45 GB. Jeśli bieżące used_memory lub wartości used_memory_rss są wyższe niż nowy limit 45 GB, system musi eksmitować dane do momentu, gdy oba used_memory te used_memory_rss wartości będą niższe niż 45 GB. Eksmisji można zwiększyć obciążenie serwera i fragmentację pamięci. Aby uzyskać więcej informacji na temat metryk pamięci podręcznej, takich jak used_memory i used_memory_rss, zobacz Tworzenie własnych metryk.

Uwaga

W przypadku skalowania pamięci podręcznej w górę lub w dół ustawienia i maxmemory-reservedmaxfragmentationmemory-reserved są automatycznie skalowane proporcjonalnie do rozmiaru pamięci podręcznej. Jeśli na przykład maxmemory-reserved ustawiono wartość 3 GB w pamięci podręcznej 6 GB, a skalowanie do 12 GB pamięci podręcznej powoduje automatyczne zaktualizowanie ustawień do 6 GB podczas skalowania. Skalowanie w dół odbywa się odwrotnie. W przypadku programowego skalowania pamięci podręcznej w górę lub w dół przy użyciu programu PowerShell, interfejsu wiersza polecenia lub interfejsu API maxmemory-reserved REST dowolne lub maxfragmentationmemory-reserved są ignorowane w ramach żądania aktualizacji. Uwzględniana jest tylko zmiana skalowania. Te ustawienia pamięci można zaktualizować po zakończeniu operacji skalowania.

Następne kroki