Przewiń do głównej treści

Monit - raportowane duże zużycie pamięci w redisie

·270 słów·2 min
Monit Redis
Spis treści

Alerty monita
#

Monit raportuje dwa razy większą ilość pamięci używanej przez redisa. Czemu?

Redis co jakiś czas zrzuca wszystkie swoje klucze z pamięci RAM do pliku /var/lib/redis/dump.rdb.

Wtedy forkuje (kopiuje) swój proces. Monit widzi dwa procesy z zarezerwowaną taką samą ilością pamięci. Jednocześnie nie widzi, że mają przypisaną tą samą przestrzeń w pamięci.

Co można zrobić?
#

Zawsze można zmodyfikować czułość alertu w monicie, albo używać skryptu z komendą redis-cli info memory.

Jeśli nie zależy nam na danych, możemy wyłączyć zapis do pliku. Wtedy każde wyłączenie serwisu skasuje wszystkie klucze. Coś takiego sprawdzi się, jeśli używamy redisa tylko do danych tymczasowych (cache).

W pliku konfiguracyjnym /etc/redis/redis.conf mamy bardzo jasną instrukcję w komentarzu.

################################ SNAPSHOTTING  ################################
#
# Save the DB on disk:
#
#   save <seconds> <changes>
#
#   Will save the DB if both the given number of seconds and the given
#   number of write operations against the DB occurred.
#
#   In the example below the behaviour will be to save:
#   after 900 sec (15 min) if at least 1 key changed
#   after 300 sec (5 min) if at least 10 keys changed
#   after 60 sec if at least 10000 keys changed
#
#   Note: you can disable saving completely by commenting out all "save" lines.
#
#   It is also possible to remove all the previously configured save
#   points by adding a save directive with a single empty string argument
#   like in the following example:
#
#   save ""

Używana pamięć
#

# redis-cli info memory | grep human | grep used
used_memory_human:2.76G
used_memory_rss_human:2.81G
used_memory_peak_human:2.76G
used_memory_lua_human:41.00K
used_memory_scripts_human:0B

Źródła
#