2011-06-23 22 views
7

Aktualnie testuję wstawianie kluczy w bazie danych Redis (lokalnie). Mam ponad 5 milionów kluczy i mam tylko 4 GB pamięci RAM, więc w jednej chwili osiągam pojemność pamięci RAM i wymiany (a mój komputer ulega awarii) ...Redis - monitorowanie użycia pamięci

Problem: Jak mogę zrobić pamięć monitorowania wykorzystanie na komputerze, który ma bazę danych Redis, iw ten sposób ostrzeżenie nie więcej wstawić niektóre klucze w bazie danych Redis?

Dzięki.

Odpowiedz

4

chodzi o zużycie pamięci, radzę Ci spojrzeć na redis.io FAQ a ten artykuł o using redis as a LRU cache.

Możesz ograniczyć użycie pamięci poprzez ustawienie konfiguracji maxmemory, w takim przypadku po osiągnięciu limitu pamięci wszystkie żądania zapisu zakończą się niepowodzeniem z błędem lub możesz ustawić politykę maxmemory na allkeys-lru, na przykład , aby zacząć nadpisywać najmniej ostatnio używane dane na serwerze rzeczami, których obecnie potrzebujesz itp. W większości przypadków masz wystarczającą elastyczność, aby poradzić sobie z takimi problemami poprzez odpowiednią konfigurację.

Moja rada polega na utrzymaniu prostoty i zarządzaniu tym problemem poprzez konfigurację serwera redis, zamiast wprowadzania dodatkowej złożoności poprzez monitorowanie poziomu osa lub podobne.

+0

Dzięki. Zobaczę różne rozwiązania, szczególnie używając artykułu o użyciu redis jako pamięci podręcznej LRU (nie widziałem tego wcześniej) – kozher

4

Istnieje dobre narzędzie Unix o nazwie vmstat. Jest jak top, ale linia poleceń, dzięki czemu można uzyskać wykorzystanie pamięci i być przygotowanym przed zatrzymaniem systemu. Możesz również użyć ps v PID, aby uzyskać te informacje o konkretnym procesie. PID jest Redis mogą być pobierane w ten sposób: pidof redis-server

1

Pamięć jest ważnym zasobem dla wydajności Redis. Wykorzystana pamięć definiuje całkowitą liczbę bajtów przydzielonych przez Redis przy użyciu swojego przydziału (zarówno standardowego libc, jemalloc, jak i alternatywnego przydziału, takiego jak tcmalloc).

Możesz zebrać wszystkie dane dotyczące wykorzystania pamięci dla instancji Redis, uruchamiając "pamięć informacyjną".

 
127.0.0.1:6379> info memory 
Memory 
used_memory:1007280 
used_memory_human:983.67K 
used_memory_rss:2002944 
used_memory_rss_human:1.91M 
used_memory_peak:1008128 
used_memory_peak_human:984.50K 

Czasem, gdy Redis jest skonfigurowany bez limitu max pamięci, wykorzystanie pamięci w końcu dotrzeć do pamięci systemowej, a serwer zacznie rzucać „Out of Memory” błędów. W innych przypadkach Redis jest skonfigurowany z ograniczeniem maksymalnej ilości pamięci, ale nie ma żadnych ograniczeń. To spowodowałoby, że serwer nie usunąłby żadnych kluczy, zapobiegając w ten sposób zapisywaniu, dopóki pamięć nie zostanie zwolniona. Rozwiązaniem takich problemów byłoby skonfigurowanie Redis z maksymalną pamięcią i pewnymi zasadami eksmisji. W tym przypadku serwer zaczyna eksmitować klucze za pomocą reguły eksmisji, ponieważ wykorzystanie pamięci osiąga maksimum.

Pamięć RSS (Resident Set Size) to liczba bajtów przydzielonych systemowi operacyjnemu Redis. Jeśli stosunek "memory_rss" do "memory_used" jest większy niż ~ 1,5, oznacza to fragmentację pamięci. Pofragmentowaną pamięć można odzyskać przez ponowne uruchomienie serwera.

Przeczytaj dokładniejszy opis, aby monitorować serwer redis here

Powiązane problemy