Redis
 sql >> Baza danych >  >> NoSQL >> Redis

skoki pamięci i procesora redis

Po dalszych eksperymentach z tym i czytaniu o trwałości redis, myślę, że można poczynić następujące obserwacje:

  • W przypadku korzystania z RDB (ustawienia domyślne), redis rozwidla się za każdym razem, gdy save uruchamiana jest operacja, która (domyślnie) jest ustawiona na raz na 15 minut jako minimum . Gdy wykonywanych jest więcej zapisów do Redis, zapisy RDB są tak częste, jak raz na 60 sekund .
  • Każdy widelec użyje alokacji pamięci „kopiuj przy zapisie”, co oznacza, że ​​chociaż pamięć nie podwaja się - będzie tak wyglądać w narzędziach takich jak ps , htop i tym podobne.
  • Sam fork może być operacją dość intensywną dla procesora, szczególnie na hostach wirtualnych opartych na xen (którego obecnie używamy).
  • Wydaje się, że operacja zapisu całkowicie nadpisuje istniejący plik RDB. Nie zapisuje tylko zmian, ale raczej zrzuca całość zestaw danych na dysk.

Tak więc na skromnym wirtualnym hoście z 4 GB pamięci RAM i zestawem danych około 750 MB (w momencie, gdy pisałem pytanie), zaczyna to być dość „drogie”. Zaobserwowaliśmy te skoki procesora/pamięci, a także zwiększone IO, nawet przy dość umiarkowanym obciążeniu/obciążeniu redis.

Odpowiadając na moje własne pytanie – wydaje się, że jest to „oczekiwane” zachowanie.

Jeśli chodzi o poprawę sytuacji, zdecydowaliśmy się zmienić naszą konfigurację na połączenie RDB i AOF. AOF (Dołącz tylko plik), wydaje się, że zapisuje tylko zmiany na dysk. Możesz (i powinieneś) nadal skonfigurować plik AOF do przepisywania (używając auto-aof-rewrite-percentage i auto-aof-rewrite-min-size ustawienia). Wskazane jest również, aby nadal używać RDB do migawek. Jednak w tej konfiguracji prawdopodobnie będziesz mógł rzadziej wykonywać pełne przepisywanie / zrzuty obrazu i nadal utrzymywać całkiem dobrą wydajność i jeszcze lepszą trwałość.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. jak skonfigurować limit czasu działania bazy JedisConnectionFactory na frameworku Spring Boot

  2. Obszar powiadomień i wiadomości za pomocą Redis

  3. redis:resetuj licznik każdego dnia

  4. Redis jako baza danych

  5. Pobieranie wartości za pomocą potoku jedis