Zarządzanie pamięcią
Zasady eksmisji
Wybierz zasady eksmisji, które działają dla aplikacji. Domyślne zasady dla usługi 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 pod ciśnieniem pamięci, warto rozważyć allkeys-lru
zasady.
Wygaśnięcie kluczy
Ustaw wartość wygaśnięcia kluczy. Wygaśnięcie powoduje proaktywne usunięcie kluczy zamiast czekać, aż będzie istnieć 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.
Minimalizowanie fragmentacji pamięci
Duże wartości mogą pozostawić pamięć pofragmentowaną na eksmisji i mogą prowadzić do wysokiego użycia pamięci i obciążenia serwera.
Monitoruj użycie pamięci
Dodaj monitorowanie użycia pamięci, aby upewnić się, że nie zabraknie pamięci i masz możliwość skalowania pamięci podręcznej przed wystąpieniami problemów.
Konfigurowanie ustawienia maxmemory-reserved
Skonfiguruj ustawienie maxmemory-reserved, aby poprawić czas reakcji systemu:
Wystarczające ustawienie rezerwacji jest szczególnie ważne w przypadku obciążeń z dużym obciążeniem zapisu 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 programumaxfragmentationmemory-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 dlamaxmemory-reserved
to 10% — 60% wartościmaxmemory
. Jeśli spróbujesz ustawić te wartości niższe niż 10% lub wyższe niż 60%, zostaną one ponownie ocenione i ustawione na minimum 10% i 60% maksimum. 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 obsługi 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 dlamaxfragmentationmemory-reserved
to 10% — 60% wartościmaxmemory
. Jeśli spróbujesz ustawić te wartości niższe niż 10% lub wyższe niż 60%, zostaną one ponownie ocenione i ustawione na minimum 10% i 60% maksimum. Wartości są renderowane w megabajtach.Jedną z kwestii, które należy wziąć pod uwagę podczas wybierania nowej wartości rezerwacji pamięci (
maxmemory-reserved
lubmaxfragmentationmemory-reserved
) jest to, jak ta zmiana może mieć wpływ na pamięć podręczną z dużymi ilościami 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żąceused_memory
lubused_memory_rss
twoje wartości są wyższe niż nowy limit 45 GB, system musi eksmitować dane do momentu, gdy obaused_memory
used_memory_rss
te wartości będą niższe niż 45 GB. Eksmisja może zwiększyć obciążenie serwera i fragmentację pamięci. Aby uzyskać więcej informacji na temat metryk pamięci podręcznej, takich jakused_memory
i , zobacz Tworzenie własnych metrykused_memory_rss
.
Uwaga
W przypadku skalowania pamięci podręcznej w górę lub w dół ustawienia i maxmemory-reserved
maxfragmentationmemory-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 pamięci podręcznej 12 GB spowoduje automatyczne zaktualizowanie ustawień do 6 GB podczas skalowania. W przypadku skalowania w dół następuje 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 REST dowolne maxmemory-reserved
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.