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

Jak ustalić wyciek pamięci Redis?

Oto kilka źródeł „ukrytego” zużycia pamięci w Redis:

  • Marc wspomniał już o buforach utrzymywanych przez mastera do zasilania niewolnika. Jeśli urządzenie podrzędne pozostaje w tyle za urządzeniem nadrzędnym (ponieważ działa na przykład na wolniejszym komputerze), część pamięci zostanie zużyta na urządzeniu nadrzędnym.

  • po wykryciu długotrwałych poleceń Redis rejestruje je w obszarze SLOWLOG, co zajmuje trochę pamięci. Możesz użyć polecenia SLOWLOG LEN, aby sprawdzić liczbę rekordów, które tutaj masz.

  • bufory komunikacyjne mogą również zajmować pamięć. O ile dobrze pamiętam, ze starymi wersjami Redisa (a 2.4 jest dość stary - naprawdę powinieneś uaktualnić) był nieograniczony, co oznacza, że ​​jeśli przeniesiesz duży obiekt w punkcie, bufor komunikacyjny związany z tym połączeniem klienckim wzrośnie i nigdy się nie kurczą. Jeśli jest wielu klientów, którzy od czasu do czasu zajmują się dużymi przedmiotami, może to być możliwym wytłumaczeniem. Jeśli używasz poleceń pobierających bardzo duże dane z Redis (w jednym ujęciu), może to być również wyjaśnieniem. Na przykład proste polecenie KEYS * zastosowane na serwerze Redis przechowującym miliony kluczy zużyje znaczną ilość pamięci.

Wspomniałeś, że masz obiekty o wielkości do 25 MB. Masz 404 połączenia klientów, jeśli każdy z nich potrzebuje dostępu do takich obiektów w danym momencie, zużyje 10 GB pamięci.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. poczekaj, aż wszystkie obietnice skończą się w nodejs z bluebird

  2. Pamięć podręczna Laravela w Redis jest bardzo powolna

  3. Przekroczono limit połączenia/rozmiaru bufora Redis

  4. Jak zwrócić flask render_template po zakończeniu pracy w tle Redis?

  5. Jak skonfigurować połączenie z Redis Sentinel za pomocą biblioteki Jedis?