2012-11-19 15 views
5

Jakie mogą być powody powolnej pracy/odpowiedzi Redisa?Powody, dla których Redis zwolni

tj. Znalazłem na Stackoverflow, że przechowywanie dużych plików lub danych w Redis sprawia, że ​​jest wolny. Co jeszcze?

Odpowiedz

9

Nie ma prostej odpowiedzi na to pytanie. Ze wszystkimi rozwiązaniami pamięci masowej opartymi na NoSQL lub SQL, istnieje wiele warunków, które mogą spowodować duże opóźnienie lub spowolnienie mechanizmu magazynowania. Redis nie jest wyjątkiem.

Proponuję zacząć od czytania

Oto niewyczerpujący wykaz potencjalnych przyczyn:

  • Nieodpowiednie metalowe (sieć, pamięć, CPU)
  • oprogramowania do wirtualizacji oparte (Xen na sprzęcie low-end na przykład)
  • Za mało pamięci, generując zamiana na poziomie OS
  • Too many O (n) operacji (takich jak klucze) wykonany w silniku jednowątkowy
  • Duże obiekty przechowywane w Redis, prowadząc do niekontrolowanej ekspansji buforów komunikacyjnych
  • liczba Ogromne jednoczesnych sesji (> 30000)
  • Zbyt wiele operacji połączeń na sekundę (Redis nie jest serwer WWW, połączenia mają być trwałe, nie przejściowy).
  • zbyt wiele roundtrips generowane przez aplikację kliencką (nie potokowe lub polecenia zagregowane użytkowania)
  • dużych operacji widełki wytworzone przez bgsave lub przepisanie AOF (zwłaszcza VMS)
  • we/wy związanych z utajenia po AOF służy
  • akumulacja wygaśnie operacje wyzwalane jednocześnie
  • nagromadzenie w pamięci klienta i Master/Slave buforów komunikacyjnych lub powolnych danych dziennika
  • TCP incast conditions gdy zużycie przepustowości sieci jest znacząca
  • Korzystanie rozproszonej pamięci masowej (a szczególnie te mętne jak EC2 EBS) do przechowywania plików zrzutu lub AOF

Prawdopodobnie istnieje wiele innych przyczyn związanych z pracą generowanego przez własnej aplikacji.

Jeśli niektórzy ludzie myślą o innych ogólnych przyczynach, możemy dodać je do tej listy.

+0

Dzięki! Myślę, że jest to dla mnie wspaniała odpowiedź, od której mam zacząć. – shalakhin